스프링 MVC 1편 - 2. 서블릿

Updated:

김영한님의 인프런 강의 - 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
위 강의를 정리한 내용입니다.

I. Hello 서블릿

@ServletComponentScan : 하위 패키지 중 서블릿을 모두 찾아서 등록, 실행할 수 있도록 도와줌

  • 서블릿으로 등록하려는 클래스는 HttpServlet을 상속해주자
  • @WebServlet(name = "", urlPatterns = "/")
    • urlPatterns로 접근하면 해당 클래스가 실행됨
  • reuqest.getParameter("x") : 쿼리 파라미터를 간편하게 파싱
  • response.getWriter().write("a") : 응답 바디 작성
  • logging.level.org.apache.coyote.http11=debug : 프로퍼티에 작성 시 요청에 대한 전문을 볼 수 있다.

II. HttpServletRequest

  • HTTP 요청 메세지를 파싱하여 HttpServletRequest객체에 담아 제공
  • 임시 저장소 기능 : 해당 HTTP 요청이 시작부터 끝날 때 까지 유지되는 임시 저장소 기능
    • 저장 : request.setAttribute(name, value)
    • 조회 : request.getAttribute(name)
  • 세션 관리 기능
    • request.getSession(create: true)

HTTP 요청 데이터

  • GET - 쿼리 파라미터
    • URL에 쿼리 파라미터를 포함해서 전달
    • 검색, 필더, 페이징 등
  • POST - HTML Form
    • content-type:application/x-www-form-urlencoded
    • 메세지 바디에 쿼리 파라미터 형식으로 전달
    • 회원가입, 상품주문 등
  • HTTP message body에 데이터를 직접 담아 요청
    • HTTP API에서 주로 사용, JSON, XML, TEXT
    • 데이터 형식은 주로 JSON
    • POST, PUT, PATCH

GET - 쿼리 파라미터

  • URL에 ?로 시작, 추가 파라미터는 &로 구분
  • request.getParameterValues() : 하나의 키값에 여러 값이 들어가있을 때

HTTP 요청 데이터 - POST HTML Form

  • GET방식과 똑같이 request.getParamter()로 꺼낼 수 있다.

HTTP 요청 데이터 - API 메세지 바디 - JSON

  • content-type: “application/json”
  • JSON도 결국은 그냥 문자다.
  • 스프링 부트가 기본적으로 지원하는 JSON 변환 라이브러리(J ackson) 사용

III. HttpServletResponse

  • response.setStatus(HttpServletResponse.SC_OK);
    • 응답코드 200 을 대신함(매직넘버보다는 의미있는 값으로 넣기)
  • Content-Length는 생략하면 자동으로 생성
  • response.sendRedirect() : 리다이렉트

HTTP 응답 데이터

API JSON

HelloData helloData = new HelloData();
helloData.setUsername("kim");
helloData.setAge(20);

//{"username":"kim", "age":20}
String result = objectMapper.writeValueAsString(helloData);
response.getWriter().write(result);

Leave a comment