Spring에서 HTTP Request을 처리하는 과정
웹에 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