
서블릿과 스프링의 등장에서 이어집니다.
Spring MVC는 Spring 프레임워크의 웹 계층 서브 모듈입니다.
Spring mvc의 역사를 알고 싶다면 아래를 읽어보시는 것을 추천드립니다.
Spring MVC의 핵심 가치 중 하나는 OCP입니다. Dispatcher servlet은 이 핵심 가치를 위한 중요 클래스입니다.
Front controller 패턴은 모든 요청을 받아 공통 로직을 처리하고 세부 로직은 다른 hanlder들에게 위임하는 패턴입니다.
Dispatch servlet은 모든 Http protocol에 대한 front controller의 역할을 수행합니다.
Central dispatcher for HTTP request handlers/controllers, e.g. for web UI controllers or HTTP-based remote service exporters. Dispatches to registered handlers for processing a web request, providing convenient mapping and exception handling facilities.
from Spring docs
Dispatcher Servlet은 모든 요청을 받아 알맞은 Handler를 선택, 호출합니다.
여기서 Handler는 controller 또는 method입니다.
ex)
@RequestMapping이 붙은 메서드
이 때 호출되는 handler의 성격이 다르기 때문에 Dispatcher 서블릿은 Handler를 직접 호출하는 것이 아닌 HandlerAdaptor를 통해 호출합니다.
[요청]
↓
DispatcherServlet
↓ (핸들러 조회)
HandlerMapping → Handler 객체 반환
↓ (핸들러 어댑터 조회)
HandlerAdapter → Handler 실행
↓
ModelAndView 반환
↓
ViewResolver + View 렌더링
↓
[응답]
--