DispatchServlet

Soozoo·2024년 8월 20일

Spring

목록 보기
8/12

DispatcherServlet은 Spring MVC에서 핵심적인 역할을 하는 프론트 컨트롤러(Front Controller)입니다. DispatcherServlet은 모든 웹 요청을 가로채고 처리하는 중앙 허브 역할을 하며, Spring MVC 애플리케이션에서 요청과 응답의 흐름을 제어합니다.

DispatcherServlet의 주요 역할:

  1. 요청 수신:
    • 클라이언트(브라우저)로부터 오는 모든 HTTP 요청은 DispatcherServlet으로 전달됩니다. 이는 URL 패턴을 통해 설정되며, 모든 요청을 DispatcherServlet이 처리하게끔 설정할 수 있습니다.
  2. 요청 라우팅:
    • DispatcherServletHandlerMapping을 사용하여 요청 URL에 해당하는 컨트롤러를 찾습니다.
    • 이 매핑은 주로 어노테이션(@RequestMapping)이나 XML 설정 파일을 통해 이루어집니다.
  3. 요청 처리 위임:
    • DispatcherServlet은 요청을 매핑된 컨트롤러에 위임하여, 컨트롤러가 비즈니스 로직을 처리하게 합니다.
  4. 모델과 뷰 처리:
    • 컨트롤러가 데이터를 처리하고 나면, DispatcherServletViewResolver를 사용하여 적절한 뷰를 선택하고, 그 뷰를 렌더링합니다.
    • 컨트롤러로부터 반환된 ModelAndView 객체를 통해 뷰 이름과 모델 데이터를 전달받습니다.
  5. 응답 반환:
    • View가 렌더링한 최종 HTML, JSON, XML 등의 결과를 클라이언트에게 HTTP 응답으로 전송합니다.

DispatcherServlet의 흐름 요약:

  1. 클라이언트의 HTTP 요청:
    • 클라이언트가 서버로 요청을 보내면, 이 요청은 DispatcherServlet으로 전달됩니다.
  2. HandlerMapping 조회:
    • DispatcherServlet은 요청 URL을 기반으로 적절한 컨트롤러를 찾기 위해 HandlerMapping을 조회합니다.
  3. Controller 호출:
    • DispatcherServlet은 찾은 컨트롤러 메소드를 호출하고, 필요한 요청 데이터를 전달합니다.
  4. ModelAndView 반환:
    • 컨트롤러는 요청을 처리한 후 ModelAndView 객체를 반환하여, 어떤 뷰를 사용해야 하고, 어떤 데이터를 포함해야 하는지 지정합니다.
  5. ViewResolver 조회:
    • DispatcherServletViewResolver를 사용해 컨트롤러가 반환한 뷰 이름에 해당하는 실제 뷰를 찾습니다.
  6. 뷰 렌더링:
    • 선택된 뷰는 모델 데이터를 사용해 최종 HTML 페이지나 JSON/XML 응답을 렌더링합니다.
  7. HTTP 응답 전송:
    • DispatcherServlet은 렌더링된 결과를 클라이언트에게 HTTP 응답으로 전송합니다.

DispatcherServlet 설정 예시:

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

위의 설정은 DispatcherServlet이 모든 요청(경로 / 이하)을 처리하도록 설정하는 방법을 보여줍니다.

DispatcherServlet의 역할 정리:

  • 중앙집중화된 요청 처리: 모든 요청을 한 곳에서 받아서 처리합니다.
  • 애플리케이션의 진입점: 웹 애플리케이션의 모든 로직 처리는 DispatcherServlet을 통해 시작됩니다.
  • 유연한 확장성: 요청 매핑, 뷰 리졸버, 인터셉터 등 여러 컴포넌트와 협력하여 복잡한 웹 애플리케이션의 요구 사항을 처리합니다.

DispatcherServlet은 Spring MVC의 핵심 구성 요소로, 애플리케이션의 모든 요청 처리를 조정하는 역할을 합니다.

profile
넙-죽

0개의 댓글