티스토리 뷰

개발/SPRING

[Spring] DispatcherServlet

애쿠 2023. 1. 21. 23:18

Spring Boot가 보편화되면서 많은 부분들이 뒤로 숨겨지게 되었지만, 현재 담당하고 있는 서비스는 Spring MVC로 구현되어 있어 Spring MVC project에는 Spring Boot보다 많은 정보들을 xml파일로 확인할 수 있었다.

 

사실 Client 단부터 이야기를 시작해야 시작과 끝이 잘 맺어질 수 있을 것 같지만, 아직은 서버사이드에 치중해서 공부 중이니 DispatcherServlet을 기준으로 작성해보려고한다. 아직 공부하는 단계니 계속해서 내용은 보완해 나가야할 것 같다.

DispatcherServlet이란?

갑자기 DispatcherServlet부터 이야기를 시작하겠다하면 의아할 수 있다. 구현부만 생각한다면 개발자는 스프링에서 제공하는 기능인 DispatcherServlet를 생각할 필요가 없기 때문이다.

 

DispatcherServlet은 Tomcat과 같은 WAS에 request가 들어왔을 때, 가장 먼저 request를 받는 부분이다.

 


(그림출처) DispatcherServlet의 역할은 단순히 이야기하면 request와 controller를 매핑시켜주는 역할을 한다.

 

세분화하면 HandlerMapping과 HandlerAdapter의 역할을 하는데, HandlerMapping은 최초 스프링 프로젝트 빌드 과정에서 Spring에 등록된 Controller들을 Map형태로 저장하고, 실제 request가 들어온다면 HandlerApater의 역할을 수행해 적절한 Controller에 매핑시켜준다.

 

또한, 서비스 로직이 마무리된 이후에 생성된 response 객체를 적절한 view에 매핑시켜주는 역할도 담당하고 있다.

 

원래 이 과정들을 전부 web.xml에서 담당했다. 때문에 web.xml이 비대해지고 가독성도 떨어졌었는데, Spring MVC부터 DispatcherServlet이 web.xml의 역할을 일부 담당하게 되었다?라고 생각하면 될 것 같다. 때문에 DispathcerServlet은 web.xml에 선언된다.

 

<servlet>
	<servlet-name>appServlet</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<init-param>
		<param-name>readonly</param-name>
		<param-value>true</param-value>
	</init-param>
</servlet>

마치며

DispatcherServlet의 역할은 이외에도 정말 많고, 구현체를 들여다보면 정말 세줄요약 도 부끄러울 정도로 내용이 축약해 그나마 안다고 생각되는 부분만 정리했다. web.xml 파일을 들여다보면서 root-context, servlet-context에 대한 내용을 잠깐 확인했는데, 다음 글에 정리해볼 에정이다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함