2-29 DispatcherServlet 파헤치기

서현우·2022년 5월 16일
0

스프링의정석

목록 보기
29/85

Spring MVC의 요청 처리 과정

HandlerMapping, HandlerAdapter

HandlerMapping은 Map의 형태로(key=URL, value=메서드) 저장해 놓고 있다가,
요청이("/ch2/register/add) 오면 DispatcherServlet이 받아서
HandlerMapping에게서 URL에 맞는 메서드를 찾고, 메서드 정보를 받아서
그 메서드에 맞는 HandlerAdapter를 찾음.
그 HandlerAdapter과 연결된 서블릿이나 컨트롤러로 연결.
HandlerAdapter로 인해 느슨한 연결 ==> 변경에 유리.

ViewResolver

InternalResourceViewResolver
(Servlet-context.xml)

DispatcherServlet이 Controller에서 "registerForm"을 받으면
ViewResolver에게 물어보고
ViewResolver는 정확한 주소("WEB-INF/views/registerForm.jsp")를
알려주고, DispatcherServlet은 registerForm.jsp로 모델을 보냄.

JstlView(인터페이스 View)

DispatcherServlet과 registerForm.jsp 사이에 존재

DispatcherServlet의 소스 분석

DispatcherServlet.class는 spring-webmvc-5.0.7.RELEASE.jar에 포함
소스 파일 위치 - org/springframework/web/servlet/DispatcherServlet.java
기본 전략 - org/springframework/web/servlet/DispatcherServlet.properties
(기본 전략 : 기본적으로 사용하는 클래스)

주요 메서드

initStrategies() - 기본 전략을 초기화
doService() - doDispatch() 호출
doDispatch() - 실제 요청을 처리
processDispatchResult() - 예외가 발생했는지 확인, 발생하지 않았으면 render() 호출
render() - 응답결과를 생성해서 전송

profile
안녕하세요!!

0개의 댓글