본문 바로가기

플밍 is 뭔들/SPRING

[SPRING] DispatcherServlet에 관하여...

※ DispatcherServlet 이란?
프론트 컨트롤러(Front Controller) 이다.
Servlet 컨테이너에서 HTTP 프로토콜을 통해 들어오는 모든 요청을 제일앞에서 처리할 수 있는 컨트롤러.

※ 동작 방식
  1. 자바 서버의 서블릿 컨테이너의 요청이 들어오면 DispatcherServlet이 해당 요청을 받는다.
  2. DispatcherServlet은 URL, 파라미터 정보, HTTP 명령 등을 참고하여 HandlerMapping를 통해 어떤 컨트롤러에게 보낼지 결정된다.
  3. DispatcherServlet이 모든 웹 요청 정보가 담긴 HttpServletRequest 타입의 오브젝트를 핸들러 어댑터에게 전달하면 핸들러 어댑터는컨트롤러가 받을 수 있는 파라미터로 적절히 변환하여 해당 컨트롤러에게 전달해준다.
  1. 컨트롤러가 작업을 완료하면 모델과 뷰를 DispatcherServlet에게 돌려준다.
  2. 컨트롤러가 직접 뷰오브젝트를 리턴 할수도 있지만, 보통은 뷰의 이름을 리턴해주면 DispatcherServlet의 뷰 리졸버가 이를 이용해 뷰 오브젝트를 생성한다.

servlet-context.xml 중 일부
     <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
            <beans:property name="prefix" value="/WEB-INF/views/" />
            <beans:property name="suffix" value=".jsp" />
      </beans:bean>


  1. 뷰 리졸버를 통해 받은 뷰오브젝트에게 모델을 전달해주고 클라이언트에게 돌려줄 최정 결과물을 생성해달라고 요청한다.
  2. View의 처리결과를 DispatcherServlet에 보낸다.
  1. 뷰 작업을 통해 전달받은 최종 결과물은 HttpServletResponse 오브젝트에 담아 넘긴다.


*아래는 MVC의 흐름에 대한 그림이다. 위의 숫자와는 상관이 없고 설명이 잘 된것 같아 퍼왔다.

이미지 출처 : http://hunit.tistory.com/