spring MVC

p_chan.log·2022년 12월 7일

spring

목록 보기
1/3

DispatcherServlet

HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러(Front Controller)

클라이언트로부터 어떠한 요청이 오면 Tomcat(톰캣)과 같은 서블릿 컨테이너가 요청을 받게 됩니다. 그리고 이 모든 요청을 프론트 컨트롤러인 디스패처 서블릿이 가장 먼저 받게 됩니다. 그러면 디스패처 서블릿은 공통적인 작업을 먼저 처리한 후에 해당 요청을 처리해야 하는 컨트롤러를 찾아서 작업을 위임합니다.
여기서 Front Controller(프론트 컨트롤러)라는 용어가 사용되는데, Front Controller는 주로 서블릿 컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 모든 요청을 받아서 처리해주는 컨트롤러로써, MVC 구조에서 함께 사용되는 디자인 패턴입니다.

ViewResolver

Spring MVC 흐름

1) 클라이언트로부터 요청(Request) 접수

서블릿 컨테이너에서 받은 HTTP요청을 Dispatcherservlet에 할당해주는데 이를 먼저 web.xml에서 설정해준다.
web.xml에서 서블릿 설정과 url매핑을 설정하며, 요청이 들어오면 Dispatcherservlet에서 요청을 접수한다.

  <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

2) Dispatcherservlet에서 컨트롤러(Controller)로 위임

위의 url매핑대로 요청이 접수되면 Dispatcherservlet은 위의 MVC 흐름 그림처럼 Handler Mapping을 통해 해당 요청을 알맞은 컨트롤러로 위임한다.
Handler는 url요청을 다루는 녀석으로 요청url과 컨트롤러를 매핑하는 역할을 한다.

3) 컨트롤러(Controller)의 모델 생성

HandlerMapping을 통해 요청을 위임받은 컨트롤러(Controller)는 필요한 비즈니스 로직을 호출/수행하여 처리 결과(모델,M)를 생성하고 이 모델(M)과 출력될 뷰(View)를 Dispatcherservlet에 반환해준다.

4) ViewResolver

컨트롤러(Controller)로 부터 ModelAndView 정보를 전달받은 Dispatcherservlet은 ViewResolver란 클래스를 이용하여 사용자에게 출력할 View 객체를 얻게 된다.

5) View

ViewResolver를 통해 얻은 View객체를 통해 사용자에게 보여줄 화면을 출력한다.

profile
개발자 박찬의 노트

0개의 댓글