3. Back-end/3-2. Spring MVC - 남궁성

Spring MVC - [ DispatcherServlet ]

yunyj99 2023. 2. 1. 00:53

1. DispatcherServlet [ Spring MVC의 요청 처리 과정 ]

DispatcherServlet은 각 서블릿이나 컨트롤러가 공통적으로 처리해야 할 부분을 전처리해준다. 외에도 많은 역할을 한다.

 

우선 클라이언트에게 요청이 들어오면 DispatcherServlet은 컨트롤러에서 뷰를 반환받아 해당 뷰를 응답으로 보내준다. 이 과정을 자세히 살펴보자.

HandlerMapping은 Map으로 key(URL)-Value(메서드) 정보를 저장하고 있는다. DispatcherServlet은 HandlerMapping에서 URL에 해당하는 메서드 정보를 받고, 메서드를 호출한다.

메서드를 호출할 때 컨트롤러와 직접 연결되지 않고 HandlerAdapter를 거친다. 여러 HanlderAdapter 중 하나가 요청을 처리할 수있는 컨트롤러에서 결과를 받아 DispatcherServlet으로 전달해준다. HandlerAdapter를 거침으로써 조금 더 느슨한 연결이 되고, 변경에 유리한 설계가 된다.

ViewResolver의 종류로 전에 배웠던 InternalResourceViewResolver가 있다. 이는 뷰 이름을 주면 접두사와 접미사를 붙여서 실제 뷰 이름을 만들어준다. (ex. registerForm -> /WEB-INF/view/resgierForm.jsp ) 그럼 해당 뷰로 DispatcherServlet이 Model을 전달해준다.

JstlView는 HandlerAdapter와 마찬가지로 느슨한 결합을 위해 존재한다.

 

DispatcherServlet.class 는 spring-webmvc-5.0.7.RELEASE.jar에 포함되어있다.

소스 파일 위치는 org/springframework/web/servlet/DispatcherServlet.java 이다.

 

 


참조

https://fastcampus.co.kr/dev_academy_nks

 

스프링의 정석 : 남궁성과 끝까지 간다 | 패스트캠퍼스

국비지원 조기 마감 신화, 베스트셀러 'JAVA의 정석'의 저자 남궁성의 Spring 강의입니다! 오픈톡방과 카페에서 평생 AS를 제공하며 완강과 취업까지 도와드립니다. 지금 할인가로 확인하세요!

fastcampus.co.kr