본문 바로가기
카테고리 없음

[Spring FW] Dispatcher Servlet

by Devsong26 2023. 12. 10.

Spring Framework에서 `DispatcherServlet`은 Spring MVC의 핵심 구성 요소 중 하나로, 모든 HTTP 요청과 응답을 중앙에서 처리하는 프론트 컨트롤러(Front Controller) 역할을 합니다. `DispatcherServlet`은 클라이언트로부터 들어오는 모든 요청을 받아 적절한 핸들러(컨트롤러)에 전달하고, 그 결과를 클라이언트에게 반환하는 중요한 역할을 담당합니다.

 


DispatcherServlet의 주요 기능

  • 요청 매핑
    • 클라이언트로부터 들어오는 요청(URL과 HTTP 메소드)을 해당하는 컨트롤러의 메소드에 매핑합니다.
  • 핸들러 선택
    • 요청에 가장 적합한 핸들러(컨트롤러 메소드)를 선택합니다.
  • 핸들러 실행
    • 선택된 핸들러를 실행합니다. 이 과정에서 핸들러 인터셉터(HandlerInterceptor)를 사용하여 요청 전후에 추가적인 처리를 할 수 있습니다.
  • 모델 및 뷰 처리
    • 컨트롤러에서 반환된 모델 데이터와 뷰 이름을 기반으로 클라이언트에 반환할 뷰를 결정하고 렌더링합니다.
  • 예외 처리
    • 핸들러 실행 중 발생한 예외를 처리합니다. `@ExceptionHandler` 등을 사용하여 컨트롤러 수준에서 예외를 처리할 수 있습니다.
  • 요청 처리의 종료
    • 최종적으로 생성된 뷰를 클라이언트에게 반환합니다.

 


DispatcherServlet의 작동 과정

  • 요청 수신
    • `DispatcherServlet`은 클라이언트로부터 들어오는 모든 웹 요청을 수신합니다.
  • 핸들러 매핑 조회
    • `DispatcherServlet`은 요청 URL을 기반으로 적절한 핸들러 매핑 객체를 조회합니다.
  • 핸들러 실행
    • 적합한 핸들러가 결정되면, 해당 핸들러(컨트롤러 메소드)가 실행됩니다.
  • 뷰 해석
    • 컨트롤러가 뷰 이름을 반환하면, `DispatcherServlet`은 뷰 해석자(View Resolver)를 사용하여 이 이름에 해당하는 뷰 객체를 찾아 렌더링합니다.
  • 응답 반환
    • 뷰가 렌더링되면, 생성된 응답을 클라이언트에게 반환합니다.

 

 

구성 및 사용

 

Spring Boot에서 `DispatcherServlet`은 자동으로 구성되고 등록됩니다. 그러나 전통적인 Spring MVC 프로젝트에서는 `web.xml`에 `DispatcherServlet`을 명시적으로 선언하고 구성해야 합니다.

 

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

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



결론

 

`DispatcherServlet`은 Spring MVC의 중심적인 요소로, 웹 요청의 처리 및 라우팅, 뷰 렌더링, 예외 처리 등을 관리합니다. 이는 Spring 기반의 웹 애플리케이션에서 매우 중요한 역할을 하며, 애플리케이션의 요청 처리 파이프라인을 효율적으로 관리합니다.