Spring

[스프링 #5] DispatcherServlet

zamezzz 2018. 5. 5. 00:08

 스프링 #5. DispatcherServlet



 DispatcherServlet


spring.io에 따르면 DispatcherServlet의 정의는 다음과 같습니다.


Central dispatcher for HTTP request handlers/controllers


이는 Spring MVC에서 Front Controller 역할을 한다고 할 수 있습니다.


Client로부터 들어오는 Request를 최초로 받으며, 이를 어느 컨트롤러에서 처리될지를


결정합니다. 그리고 그 결과를 다시 Client에게 응답합니다.


이 흐름은 아래 그림을 보면 조금 더 쉽게 이해 할 수 있습니다.


1. 먼저 Clinet로부터 Request가 DispatcherServlet로 들어갑니다.


2. DispatcherServlet은 파라미터 정보, URL 등을 참고하여 HandlerMapping를 통해 해당 Request가 매핑된 Controller가 있는지 확인한 후, 어떤 Controller에서 처리할지 결정합니다.


3. Controller가 결정되었다면 DispatcherServlet은 해당 Request 정보가 담긴 오브젝트를 HandlerMapping으로 넘기고, 여기서 해당 Controller로 전달해줍니다.


4. Controller가 작업을 완료하면 그 결과를 다시 DispatcherServlet에 전달합니다.


5. 전달 받은 결과(ModelAndView)를 바탕으로 DispatcherServlet은 이를 ViewResolver에 보내어 해당 View Object를 검색합니다.


6. ViewResolverView Object에게 Model을 전달하여 Client에게 응답할 최종 결과를 생성하도록 요청합니다.


7. View Object는 최종 결과를 생성하여 DispatcherServlet에 전달합니다.


8. DispatcherServlet은 view 작업까지 완료된 결과물을 Response합니다.




위 과정을 그림과 함께 보면 조금 더 이해가 잘 될것이라 생각됩니다.


복잡해 보이지만 하나씩 보면 그래도 이해가 되는 것 같습니다.


감사합니다.

반응형

'Spring' 카테고리의 다른 글

[스프링 #7] Test  (0) 2019.03.30
[스프링 #6] Custom Annotation  (0) 2018.05.30
[스프링 #4] 의존관계 주입 (DI) - 2  (0) 2018.02.24
[스프링 #3] 의존관계 주입 (DI) - 1  (0) 2018.01.19
[스프링 #2] 제어의 역전(IoC)  (0) 2017.12.30