Spring/Framework / / 2024. 6. 16. 15:17

DispatcherServlet 이란?

Spring Framework에서 DispatcherServlet은 들어온 요청을 가장 먼저 처리하는 프론트 컨트롤러(Front Controller) 입니다.

모든 HTTP 요청은 DispatcherServlet으로 전달되며, 이 서블릿은 요청을 처리하기 위해 여러 컴포넌트와 협력합니다.

이를 통해 웹 애플리케이션에서 요청을 효율적으로 처리하고 응답을 생성할 수 있습니다.

DispatcherServlet의 주요 역할과 동작 원리

이미지 출처: https://howtodoinjava.com/spring-mvc/spring-dispatcherservlet-tutorial/

  • 요청 수신: 모든 HTTP 요청은 먼저 Servlet Container 안에 존재하는 DispatcherServlet에 도달합니다.
    • 예전과 같은 경우에는 web.xml에 따로 설정을 해주어야 했으나, SpringBoot가 등장하면서 이를 대신 해줍니다.
  • 핸들러 매핑
    • DispatcherServlet은 요청을 처리할 적절한 핸들러를 찾기 위해 여러 HandlerMapping 인턴페이스 구현체를 사용합니다
    • 핸들러 매핑은 URL 패턴, HTTP 메서드, 요청 매개변수 등을 기반으로 핸들러를 결정합니다.
    • 이때 매핑할 정보는 ‘@Controller’ 를 사용한 컨트롤러들을 HashMap 형태로 저장하고 있습니다.
    • 이러한 정보를 HandlerExceptionChain으로 래핑하여 반환합니다.
      • 이는 추후에 다룰 인터셉터와 관련이 있습니다.
    • 가장 대표적인 구현체로는 RequestMappingHandlerMapping이 있습니다.
  • 핸들러 어댑터
    • DispatcherSerlvet은 선택된 핸들러를 실행하기 위해 적절한 HandlerAdapter를 사용합니다.
    • 핸들러 어댑터는 다양한 종류의 핸들러(’@Controller’)를 실행할 수 있도록 돕습니다
    • 대표적인 구현체로는 RequestMappingHandlerAdapter가 있습니다.
  • ModelAndView
    • 핸들러는 보통 ModelAndView를 반환합니다. Rest API를 사용하고 나서는 꼭 ModelAndView가 아니어도 HTTP Status만 반환하는 경우가 많아졌지만, 그 이전에는 뷰 이름과 뷰에 전달할 모델 데이터를 포함한 ModelAndView를 많이 반환하였습니다
  • View Resolver
    • 반환된 ModelAndView 객체를 사용하여 해당 데이터에 맞는 뷰를 찾기 위해 ViewResolver를 사용합니다
    • 대표적인 구현체로는 ThymeleafViewResolver 등이 있습니다
      • 프론트 공부 없이 웹페이지를 구현해보고 싶으시다면 타임리프를 찾아보시는 것을 추천드립니다!
  • View Rendering
    • 뷰 리졸버에 의해 선택된 뷰는 모델 데이터를 사용하여 클라이언트에 반환될 HTML이나 JSON 등의 응답을 생성합니다.

이러한 과정을 거친 후 최종적으로 클라이언트에게 응답을 내려줍니다.

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유