DispatcherServlet

DispatcherServlet이란

DispatcherServlet은 Spring의 모든 요청을 Spring 규약에 따라 분배 처리하는 코어 서블릿(Servlet)이다. Spring project 생성 시 자동으로 생성되도록 web.xml에 설정되어 있다.

DispatcherServlet 등록

등록되어 있는 DispatcherServlet 코드는 다음과 같다.

web.xml
<!-- 생략 -->
<servlet>
	<servlet-name>appServlet</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<init-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
</servlet>	
<servlet-mapping>
	<servlet-name>appServlet</servlet-name>
	<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 생략 -->
  • <servlet> - 생성할 서블릿에 대한 정보를 등록하는 영역

    • <servlet-name> - 설정 파일이 위치한 폴더 이름과 동일하게 작성하며, <servlet-mapping>과 연결되도록 동일하게 작성

    • <servlet-class> - 생성할 서블릿의 경로(Path)를 작성

    • <init-param> - 생성 시 전달할 옵션(인자) 설정

    • <load-on-startup> - 실행 시 우선순위 설정

  • <servlet-mapping> - 생성할 서블릿이 처리할 주소를 등록하는 영역

    • <servlet-name> - 설정 파일이 위치한 폴더 이름과 동일하게 작성하며, <servlet>과 연결되도록 동일하게 작성

    • <url-pattern> - 처리할 주소 패턴을 작성

설정 내용에 따르면 다음 정보를 알아낼 수 있다.

DispatcherServlet은 appServlet 폴더에 있는 servlet-context.xml 파일을 기반으로 작동한다. 또한 설정으로 제외한 주소를 뺀 나머지(/)에 대한 요청을 처리한다. 실행 시 가장 높은 우선순위를 가진다.

Spring Framework의 요청 처리 흐름

Spring Web Application은 다음과 같은 흐름으로 사용자의 요청을 처리한다.

HandlerMapping을 통해 처리 가능 여부를 파악하게 되며, 이 때 servlet-context.xml의 내용을 확인하게 된다.

처리가 가능할 경우 처리할 수 있는 도구(Controller)의 정보를 받아오며, 없을 경우 404 오류가 발생한다.

HandlerMapping으로부터 얻은 도구(Controller)를 호출하여 핵심 업무(비즈니스 로직) 처리를 지시한다.

처리를 마치면 처리 도구(Controller)는 결과물을 보여주기 위한 페이지 정보를 반환한다.

ViewResolver를 불러 결과를 인쇄하도록 지시한다.

완성된 결과물을 받고

이를 사용자에게 전달하면 1회의 요청이 완료된다.

Last updated