DispatcherServlet
DispatcherServlet은 클라이언트의 요청이 들어오면 적절하게 처리해줄 컨트롤러를 찾아주는 역할을 수행하고, 컨트롤러의 공통 처리가 가능한 부분(전처리 부분)을 따로 빼내게 해주어 중복을 제거해주기도 한다.
DispatcherServlet의 처리 과정은 다음과 같다.
1. 클라이언트의 요청이 들어오면 DispatcherServlet이 HandlerMapping을 통해 어떤 메서드가 처리할지에 대한 결정을 반환받는다.
2. 이후 DispatcherServlet에서 컨트롤러를 직접 호출하는 것이 아닌 HandlerAdapter를 거쳐 호출하게 된다. HandlerMapping이 알려준 메서드를 어떤 HandlerAdapter가 호출할 수 있는지를 보고 처리해줄 수 있는 해당 HandlerAdapter에게 넘겨준다.
3. 넘겨받은 HandlerAdapter는 이에 해당하는 적절한 컨트롤러에게 요청을 전달하고, 컨트롤러는 처리한 결과 및 뷰 정보(ModelAndView)를 DispatcherServlet에게 전달한다.
4. 최종적으로 DispatcherServlet은 ViewResolver를 통해 해당하는 뷰를 찾는다.
※ DispatcherServlet.java 주요 메서드
① void initStrategies(ApplicationContext context) - 기본 전략 초기화
② void doService(HttpServletRequest request, HttpServletResponse response) - doDispatch() 호출
③ void doDispatch(HttpServletRequest request, HttpServletResponse response) - 실제 요청을 처리
④ void processDispatchResult(HttpServletRequest request, HttpServletResponse response, HandlerExecutionChain)
- 예외가 발생했는지를 확인하고, 발생하지 않았으면 render() 호출
⑤ void render(ModelAndView mv, HttpServletRequest request, HttpServletResponse response)
- 응답 결과를 생성하여 전송
'[패스트캠퍼스] 스프링의정석 정리 > Spring' 카테고리의 다른 글
스프링 DI 이론 - IoC와 DI (0) | 2023.05.18 |
---|---|
스프링 DI 흉내내기 (0) | 2023.05.17 |
데이터의 변환과 검증 핵심 인터페이스 정리 (1) | 2023.05.17 |
스프링에서의 예외 처리 핵심 정리 (0) | 2023.05.17 |
@RequestParam과 @ModelAttribute (0) | 2023.05.14 |