HttpServletRequest 상세

HttpServletRequest는 클라이언트로부터 HTTP 요청이 들어오면 요청 데이터를 분석하고 분석한 정보들이 저장되어 HttpServletResponse와 함께 서블릿으로 전달되는 객체이다.

img_3.png

HttpServletRequest 구조

img_4.png

HttpServletRequest 생성

img_5.png

HTTP 요청 데이터를 분석하여 분석한 값들을 org.apache.coyote.Request 객체에 저장하고 이를 서블릿 컨테이너에서 동작할 수 있도록 HttpServletRequest 구현체들을 생성하고 연결한다.

img_6.png

스프링의 Request

  • WebRequest : HTTP 요청의 파라미터, 헤더 등 메타데이터에 대한 추상화된 접근을 제공하는 인터페이스

  • NativeWebRequest : 네이티브 서블릿 객체(HttpServletRequest)에 접근할 수 있는 인터페이스

  • ServletWebRequest : HttpServletRequestHttpServletResponse를 감싸며 스프링 자체 추상화된 요청 및 응답 기능을 제공하는 구현체

img_7.png

예제 코드


HttpServletRequest 생성 주요 과정 디버깅

1. Http11Processor

org.apache.coyote.Request를 생성 후 저장

img_8.png

HTTP 요청 데이터를 분석

img_9.png

2. CoyoteAdapter

org.apache.catalina.connector.Request를 생성해 org.apache.coyote.Request를 연결

img_10.png

3. org.apache.catalina.connector.Request

RequestFacade 생성자에 자신을 전달하여 RequestFacade -> connector.Request -> coyote.Request 구조 완성

img_11.png

4. 컨트롤러

img_13.png
img_12.png

Last updated