Dispatcher Servlet
에 있는 dispatch는 "보내다"라는 뜻을 가진다.Dispatcher Servlet
은 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 보내주는 Front Controller
이다.Front Controller
는 주로 서블릿 컨테이너의 제일 앞단에서 서버로 들어오는 클라이언트의 모든 요청을 받아서 처리해주는 컨트롤러 ( MVC 구조에서 함께 사용되는 디자인 패턴 )Dispatcher Servlet
은 Front Controller
로서 클라이언트로 부터 어떠한 요청이 오게 되면 모든 요청을 자신이 먼저 받게 되고, 이러한 요청들을 세부 컨트롤러에게 전달하는 역할 !Dispatcher Servlet
은 해당 어플리케이션으로 들어오는 모든 요청을 핸들링 해주기 때문에, 우리는 컨트롤러를 구현해두기만 하면 Dispatcher Servlet
가 알아서 적합한 컨트롤러로 위임을 해주는 구조가 된다.Dispatcher Servlet
에 전달controller
검색하여 Handler Mapping
에 전달HandlerMapping
에서 해당 controller
에 처리 요청controller
에서 처리 결과를 Handler Adapter
에서 ModelAndView 객체로 변환하여 Dispatcher Servlet
에 전달Dispatcher Servlet
에서 전달받은 ModelAndView 객체를 이용하여 매핑되는 View를 검색viewResolver
에서 처리 결과를 view
에 전달view
를 Dispatcher Servlet
에 전달Dispatcher Servlet
에서 최종 응답 결과를 클라이언트에게 반환doService()
메서드가 호출됨doService()
의 코드는 맨 아래에서 doDispatch()
메서드가 호출됨doDispatch()
에서는 클라이언트의 요청에 해당하는 핸들러를 조회하고(getHandler()
),getHandlerAdapter()
)handle()
메서드를 호출processDispatchResult()
메서드를 호출processDispatchResult()
메서드는 안에서 render()
메서드를 또 다시 호출render()
메서드 안에서는 뷰 리졸버(viewResolver)를 통해 view를 찾고, 해당 view를 반환받음이렇게 코드들을 따라가보면 결국 위 과정에 따른 순서대로 Dispatcher Servlet이 동작하는 것을 알 수 있다 !
참고 자료
[스프링/Spring] 스프링 MVC? DispatcherServlet 이해하기
Spring MVC - DispatcherServlet 동작 원리
[Spring] Dispatcher-Servlet(디스패처 서블릿)이란? 디스패처 서블릿의 개념과 동작 과정
[Spring] MVC DispatcherServlet 동작 원리