HttpServletRequest, HttpServletResponse

Xonic·2022년 6월 1일
1

Java-Spring

목록 보기
7/7

참고로 HTTP 프로토콜과 네트워크 이해 필요

WAS와 서블릿 컨테이너

HttpServletRequest

HttpServletRequest 역할

  • HTTP 요청 메시지를 개발자가 편리하게 사용할 수 있도록 개발자 대신 HTTP 요청 메시지를 파싱한다.
  • 그 결과를 HttpServletRequest 객체에 담아서 제공.
  • 다음의 Http 요청 메시지를 편리하게 조회할 수 있다.

Http 요청 메시지

POST /login HTTP/1.1
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded

username=xonic789&password=1234
  • START LINE
    - HTTP 메소드 (GET, POST, ..)
    • URL (/login)
    • 쿼리 스트링 (username=xonic789&password=1234)
      - 스키마, 프로토콜 (http, HTTP/1.1)
  • 헤더
    - request header 조회
  • 바디
    - form 파라미터 형식 조회
    • message body 데이터 직접 조회

임시 저장소

  • 해당 HTTP 요청이 시작부터 끝날 때까지 유지되는 임시 저장소
    • 저장: request.setAttribute(key, value)
    • 조회: request.getAttribute(key)

세션 관리

  • request.getSession()

HTTP 요청 데이터

HTTP 요청 메시지를 통해 클라이언트 -> 서버로 데이터를 전달하는 방법

  1. GET - 쿼리 파라미터
    • /{endpoint}?username=xonic789
    • 메시지 바디 없이, URL 쿼리 파라미터에 데이터를 포함해서 전달
    • 예) 검색, 필터, 페이징 등
  2. POST - HTML Form
    • content-type: application/x-www-form-urlencoded
    • 메시지 바디에 쿼리 파라미터 형식으로 전달 username=xonic789
    • 예) 게시판 생성, 댓글 달기, HTML Form 사용
  3. HTTP message body에 데이터 직접 담기
    • HTTP API에서 주로 사용, 99.99% JSON으로 (외 XML, TEXT..)
    • POST, PUT, PATCH

HttpServletResponse

HttpServletResponse 역할

  • 서블릿에 전달된 Response 에 편리하게 필요한 데이터를 담아 사용자에게 리턴하는 응답 객체.

HTTP 응답 메시지 생성

  • HTTP 응답 코드(Status Code) 지정
  • 헤더 생성
  • 바디 생성

편의 기능 제공

  • Content-Type, 쿠키, Redirect (Status Code 302)

HTTP 응답 데이터

  • 단순 텍스트 응답
    - `writer.println("asdf");
  • HTML 응답
  • HTTP API - MessageBody JSON 응답

content-type이 application/json은 스펙상 utf-8 형식을 사용하도록 정의 되어 있으므로 따로 utf-8을 설정할 필요가 없다.

참조

인프런 김영한님 강의

profile
공부 한 것을 공유하는 블로그입니다.

0개의 댓글