Dispatcher Servlet
Dispatcher Servlet를 확인하여Spring Web MVC 과정을 살펴보자
Last updated
Was this helpful?
Dispatcher Servlet를 확인하여Spring Web MVC 과정을 살펴보자
Last updated
Was this helpful?
Dispatcher Servlet이란 외부의 요청을 특정 컨트롤러로 매핑하기 위해 Front Controller 패턴을 적용한 Servlet이다.
Front Controller는 주로 서블릿 컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 모든 요청을 받아서 처리해주는 컨트롤러인데, MVC 구조에서 함께 사용되는 패턴이다. 이전에는 서블릿을 컨트롤러 당 하나씩 두고 있어서 컨트롤러가 추가될 때마다 서블릿 설정도 추가해주어야 했다. 그러나 dispatcher servlet을 두면서 컨트롤러 추가시 별도의 servlet 설정을 할 필요가 없었다. 그리고 dispatcher servlet을 통해서 Tracking이나 Security를 적용할 때 편하게 구현이 가능하고, URL 구성이 간편해졌다.
클라이언트가 해당 어플리케이션에 접근하면 DispatcherServlet이 가로챈다.
스프링은 web.xml 파일에 아래와 같이 dispatcher servlet적용 url pattern을 적용할 수 있다.
DispatcherServlet은 가로챈 정보를 HandlerMapping 에게 보내 해당 요청을 처리할 수 있는 Controller를 찾아낸다. HandlerMapping이 컨트롤러를 찾아내는 전략은 BeanNamUrlHandlerMapping과 DefaultAnnotationHandlerMapping이 기본 전략이다.
HandlerMapping을 통해 선택된 컨트롤러 객체를 DispatcherServlet에게 전달하면 DispatcherServlet은 HandlerAdapter에게 타겟 컨트롤러에게 작업을 요청한다
요청 받은 컨트롤러는 비즈니스 로직을 수행한다
컨트롤러는 요청을 응답받을 ModelAndView 객체를 변환해서 DispatcherServlet에게 리턴하게 된다. 그때 View를 찾기 위해 DispatcherServlet은 ViewResolver에게 요청하여 View를 검색한다.
컨트롤러에서 보내온 View 이름을 토대로 처리 View를 검색한다.
이 결과를 다시 DispatcherServlet 에게 보낸다.
DispatcherServlet은 최종 결과를 클라이언트에 전송한다.
filter : dispatcherServlet 이전과 이후에 동작
interceptor : dispatcherServlet과 컨트롤러 사이에 동작
aop : interceptor와 컨트롤러 사이에 동작