스프링 DispatcherServlet이란?

DispatcherServlet이란?

DispatcherServlet은 Spring Framework에서 중앙 진입점 역할로, HTTP 요청을 처리하는 프레임워크의 핵심 요소입니다. MVC(Model-View-Controller) 디자인 패턴에서 개발자가 사용자의 http 요청을 처리하는 로직을 좀 더 쉽게 구현할 수 있도록 돕습니다.

 

사용자의 http 요청에 대한 서버의 응답 방식을 보면 DispatcherServlet의 역할을 쉽게 이해할 수 있습니다.

 

1. 클라이언트로부터 http 요청이 들어오면 DispatcherServlet은 HandlerMapping을 통해 해당 요청을 처리할 Controller를 찾습니다.

 

2. 해당 Controller를 실행하여 비즈니스 로직을 처리합니다.

 

3. 처리된 결과는 데이터와 뷰 이름으로 이루어진 ModelAndView 객체에 저장되어 DispatcherServlet에 반환됩니다.

 

4. DispatcherServlet은 ViewResolver를 이용하여 뷰 이름을 실제 뷰로 변환하고, 이 뷰에 모델 데이터를 전달하여 최종적인 결과를 생성합니다.

 

5. 클라이언트에 최종 응답을 반환합니다.

 

예시)

Spring MVC 프로젝트에는 보통 web.xml 파일에 DispatcherServlet이 정의되어 있습니다. 아래의 설정은 /WEB-INF/example-servlet.xml 파일에서 DispatcherServlet의 설정을 로드하고, 모든 요청을 DispatcherServlet로 보내도록 URL 패턴을 설정합니다.

<web-app>
    <!-- ... -->

    <servlet>
        <servlet-name>example</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/example-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>example</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!-- ... -->
</web-app>

 

예를 들어, 사용자가 브라우저에서 http://yourapp.com/example  URL로 접속했다고 가정해 보겠습니다. 

 

1. HTTP 요청이 DispatcherServlet에게 전달됩니다.

 

2. DispatcherServlet은 HandlerMapping에게 Controller를 찾아달라고 요청합니다. 이때 HandlerMapping은 example-servlet.xml에 정의된 빈 설정을 확인하여 적절한 Controller를 찾습니다.

 

3. 찾은 Controller의 메서드가 실행됩니다. 예를 들어, ExampleController라는 Controller가 있고, 이 안에 showExample()라는 메서드가 있다면, 이 메서드가 실행됩니다.

 

4. showExample() 메서드는 실행 결과로 ModelAndView 객체를 반환합니다. 이 객체는 뷰 이름("exampleView")와 모델 객체({message: "Hello, Spring MVC"})를 포함하고 있습니다.

 

5. DispatcherServlet은 ViewResolver를 사용하여 뷰 이름("exampleView")를 실제 JSP 파일 경로("/WEB-INF/views/exampleView.jsp")로 변환합니다.

 

6. DispatcherServlet은 이 JSP 파일에 모델 객체({message: "Hello, Spring MVC"})를 전달하고, 이를 렌더링 하여 최종적인 HTML 문서를 생성합니다.

 

7. 이 HTML 문서가 응답으로 사용자의 브라우저로 전송됩니다.

 

정리하면, DispatcherServlet은 클라이언트의 HTTP 요청을 받아 적절한 Controller로 전달하고, 처리 결과를 바탕으로 응답을 생성하여 클라이언트에게 보내는 역할을 합니다.

반응형

댓글

Designed by JB FACTORY