티스토리 뷰
DispatcherServlet란?
해당 어플리게이션으로 들어오는 요청을 모두 처리
사용자 URL 요청 -> DispatcherServlet (<url-pattern>을 통해 인식)-> HandlerMapping -> Controller(Servlet) -> ViewResolver -> View -> DispatcherServlet -> 사용자
DispatcherServlet은 모든 요청을 Servlet으로 보내어 처리하게 되므로 굳이 하지 말아야 할 요청도 보내는 경우가 있습니다. 이런 경우는 <resources>를 이용하여 예외 처리를 한다.
EX)
<resources location="/WEB-INF/views/images/, classpath=/WEB-INF/views/images/" mapping="/images/**" />
DispatcherServlet 와 ContextLoaderListener
DispatcherServlet는 각각의 독립적으로 설정파일을 Load 하고 공유 불가
ContextLoaderListener를 사용하게 되면 Load시 여러 설정파일을 Load할 수 있음
ContextLoaderListener 와 DispatcherServlet 를 같이 사용할 경우 ContextLoaderListener는 부모 context가 되고 DispatcherServlet는 자식 context가 된다. 자식은 부모의 설정을 사용할 수 있다.
※ 공통적인 부분(공통 빈) 설정은 ContextLoaderListener에 설정 하면 된다.
Ex)
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml,
/WEB-INF/config/egovframework/springmvc/urlfilename-servlet.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>