Spring

[Spring] Dispatcher Servlet 동작 과정

위시리 2025. 4. 1. 20:28

Spring MVC의 동작 방식, 그 중 DispatcherServlet의 요청 처리 과정

 

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

 

 

reference

https://djcho.github.io/springboot/spring-boot-chapter2-2/