섹션2. 서블릿

허현진·2021년 11월 12일
0

서블릿

HTTP 요청 데이터를 어떻게 받고, 응답 데이터를 어떻게 내려줄 것인가에 대한 것

  • 스프링 부트는 톰캣 서버를 내장하고 있으므로, 톰캣 서버 설치 없이 편리하게 서블릿 코드 실행 가능

코드 작성

  • name : servlet 이름
  • urlPattern : URL 매핑
  • HTTP 요청을 통해 매핑된 URL이 호출되면, 서블릿 컨테이너는 다음 service 메서드 자동 호출

localhost:8080/hello?username=kim
하고 F12누르면 network탭에 request, response 로그 볼 수 있음

tip : 개발 할 때 http 요청 메시지를 편리하게 스프링 프레임 워크에서 눈으로 보고 싶을 때

properties에logging.level.org.appache.coyote.http11=debug 추가(개발할때만 사용 권장)

--> 헤더 정보들

서블릿 컨테이너 동작 방식

스프링 부트 실행하면 내장 Tomcat 서버 띄워줌. Tomcat 서버는 내부에 servlet container 기능을 가지고 있음. 이를 이용해서 servlet을 생성

서버의 요청 응답 구조

main -> webapp -> index.html

  • Welcom 페이지
  • localhost:8080으로 들어오면 index.html이 자동으로 로딩 (첫화면)

HttpServeltRequest를 사용하면 다음과 같은 HTTP 요청 메시지를 편리하게 조회 가능

HTTP 요청 데이터

3가지 방법 이용

  • GET - 쿼리 파라미터
    --> /url'?username=hello&age=20'
    --> 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달
    ex) 검색, 필터, 페이징 등에서 많이 사용하는 방식

  • POST - HTML Form
    --> content-type : application/x-www.form-urlencoded
    --> 메시지 바디에 쿼리 파라미터 형식으로 전달 username=hello&age=20
    ex) 회원가입, 상품 주문, HTML Form 사용

  • HTTP message body에 데이터를 직접 담아서 요청
    --> HTTP API에서 주로 사용, JSON, XML, TEXT (rest api)
    --> 데이터 형식은 주로 JSON사용
    --> POST,PUT,PATCH

HTTP 요청 데이터 - GET 쿼리 파라미터

  • 검색, 필터, 페이징 등에서 많이 사용
  • 쿼리 파라미터는 url에 ?를 시작으로 보낼 수 있다. 추가 파라미터는&로 구분하면 된다.

ex) http://localhost:8080/request.param?username=hello&age=20

  • 서버에서는 HttpServletRequest가 제공하는 메서드를 통해 쿼리 파라미터를 편리하게 조회 가능

  • request.getParameter() 는 하나의 파라미터 이름에 대해서 하나의 값만 있을 때 사용해야 한다.

  • 중복일 때는 request.getParameterValues()
    ( 사실 중복으로 보낼 경우 거의 없음 )

HTTP 요청 데이터 - POST HTML Form

  • 회원가입, 상품 주문 등에서 많이 사용
  • HTML의 Form을 사용해서 클라이언트에서 서버로 데이터 전송

특징

  • content-type : application/x-www-form-urlencoded
  • 메시지 바디에 쿼리 파라미터 형식으로 데이터 전달 : username=hello&age=20

--> request.getParameter는 GET URL 쿼리 파라미터에 있는 데이터 뿐만 아니라 POST-HTML Form 내부의 데이터 모두 꺼낼 수 있음.

HTTP 요청 데이터 - API 메시지 바디 - 단순 텍스트

  • 그냥 API 방식

  • HTTP message body에 데이터를 직접 담아서 요청

  • HTTP API에서 주로 사용, JSON, XML, TEXT 사용

  • 데이터 형식은 주로 JSON 사용
    ex) 서버와 서버가 통신할 때, 앱에서 요청할 때, 웹 브라우저에서 javascript로 요청 할 때

  • POST, PUT, PATCH에서 사용

  • JSON 은 ObjectMapper 필요

참고

  • JSON 결과를 파싱해서 사용할 수 있는 자바 객체로 변환하려면 Jackson, Gson과 같은 JSON변환 라이브러리를 추가해서 사용해야 함.
    스프링 부트로 Spring MVC를 선택하면 기본으로 Jackson 라이브러리(ObjectMApper)를 함께 제공함.

HTTP 응답 메시지 생성
1. 단순 text 보내기 2. html 보내기 3. messagebody에 json 데이터 보내기

  • HTTP 응답 코드 지정 (200,400,404 )

  • 헤더 생성

  • 바디 생성

  • 편의 기능 제공
    --> Content-Type, 쿠키, Redirect

  • html 응답으로 HTML을 반호나할 때는 content-type을 text/html로 지정

profile
코딩일지..

0개의 댓글