Spring

Spring에서 HTTP Request을 처리하는 과정

데브로그98 2024. 4. 17. 10:01

웹에 URL 주소를 입력했을 때 HTTP 요청이 시작된다. 요청을 하고 응답을 받으면 이 과정이 종료되는데, 어떤 일이 일어나는지 알아보자.

 

 

1. Client에서 Server로 요청을 전달한다.

이 요청은 DispatcherServlet이 받는데, 이것은 요청을 처리하기 위한 프론트 컨트롤러이다. 진입점 역할을 한다.

 

이렇게 서블릿 컨테이너의 앞단에서 모든 요청을 받아 처리한다. 디스패처 서블릿이 도입된 이후 공통 로직에 대한 처리가 간편해졌다.

 

DispatchServlet이 등장하게 된 배경은,

기존의 web.xml에 대한 의존을 낮추고 하나의 서블릿으로 모든 것을 관리해서 코드 중복 문제가 없어졌다. 자세한 것은 Spring MVC 패턴의 front-controller pattern을 알아보면 된다.

 

2. 해당 엔드포인트를 어떤 컨트롤러가 담당할지 HandlerMapping이 결정한다.

(RequestMappingHandlerMapping -> BeanNameUrlHandlerMapping -> HttpRequestHandler 흐름대로 탐색을 진행한다.)

3. HandlerAdapter를 통해 해당 컨트롤러의 메서드를 실행시킨다.

(RequestMappingHandlerAdapter -> HttpRequestHandler -> SimpleHandlerAdapter 순서로 탐색한다.)

3. Controller가 요청 처리를 위임한다.

4. 해당 뷰 정보를 DispatcherServlet에 전달한다.

5. 어떤 View에 데이터를 전달해야할 지 모르니까, View Resolver를 통해 View 파일을 찾는다.

7. View는 UI와 Client에게 응답한다.

 

 

참고

https://egovframe.go.kr/wiki/doku.php?id=egovframework:rte:ptl:dispatcherservlet

 

egovframework:rte:ptl:dispatcherservlet [eGovFrame]

Spring MVC Framework의 유일한 Front Controller인 DispatcherServlet은 Spring MVC의 핵심 요소이다. DispatcherServlet은 Controller로 향하는 모든 웹요청의 진입점이며, 웹요청을 처리하며, 결과 데이터를 Client에게 응

egovframe.go.kr