Spring
[Spring] Dispatcher Servlet 동작 과정
위시리
2025. 4. 1. 20:28
Spring MVC의 동작 방식, 그 중 DispatcherServlet의 요청 처리 과정
- 클라이언트 요청 (HTTP 요청)
- 사용자가 웹 브라우저 또는 API 클라이언트에서 HTTP 요청을 보낸다.
- 클라이언트의 HTTP 요청이 DispatcherServlet으로 전달
- 핸들러 조회 (Handler Mapping)
- DispatcherServlet은 요청 URL에 해당하는 컨트롤러(핸들러)를 찾기 위해 Handler Mapping을 조회한다.
- Handler Mapping은 요청 URL을 처리할 수 있는 적절한 컨트롤러를 매핑하는 역할을 한다.
- 어떤 컨트롤러가 요청을 처리할지 찾아서 알려주는 역할을 한다.
- 핸들러 어댑터 조회
- Handler Mapping을 통해 찾은 컨트롤러(핸들러)를 실행하기위한 적절한 핸들러 어댑터가 필요하다.
- DispatcherServlet은 핸들러(컨트롤러)를 직접 실행할 수 없기 때문에
- DispatcherServlet은 등록된 핸들러 어댑터 목록에서 해당 핸들러를 처리할 수 있는 핸들러 어댑터를 조회한다.
- 핸들러(컨트롤러) 실행
- DispatcherServlet가 핸들러를 실행할 수 있는 핸들러 어댑터를 찾아서 실행을 위임한다.
- 핸들러 어댑터는 핸들러(컨트롤러)를 실행한다.
- 예를 들어, @Controller나 @RestController가 붙은 클래스를 실행할 수 있다.
- 컨트롤러에서 요청을 처리하고, 데이터를 가공하여 ModelAndView 객체를 반환한다.
- ModelAndView 반환
- (4 마지막줄) 컨트롤러가 실행된 후, 응답 데이터를 포합한 ModelAndView 객체를 반환한다.
- ModelAndView 객체에는 뷰 이름(view name), 모델 데이터(model data)가 포함된다.
- ViewResolver 호출
- DispatcherServlet은 view name을 ViewResolver에 전달하여 실제 view 객체를 찾는다.
- ViewResolver는 view name을 기반으로 JSP, Thymeleaf, Mustache 등 적절한 뷰를 선택한다.
- View 반환
- ViewResolver에서 결정한 뷰를 DispatcherServlet에 반환한다.
- View 랜더링 및 HTML 응답
- DispatcherServlet은 View 객체의 render(model) 메소드를 호출하여 화면을 랜더링 한다.
- 최종적으로 클라이언트에게 HTML 응답이 전송된다.
reference