DispatcherServlet이란?
스프링 MVC에서 DispatcherServlet은 다른 웹 프레임워크의 프론트 컨트롤러처럼 클라이언트의 request를 컨트롤러에 전달할 뿐만 아니라, 스프링 IoC 컨테이너와 통합하여 스프링의 모든 기능을 제공
DispatcherServlet 설정 방법
DispatcherServlet은 httpServlet을 상속 받는 실제 서블릿임
그리고 code-based 또는 web.xml에서 설정함
아래는 WEB-INF 디렉토리 에 있는 web.xml 파일이며 DispatcherServlet이 처리할 url-mapping을 반드시 같이 작성해주어야 함
<web-app>
<servlet>
<servlet-name>example</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>example</servlet-name>
<url-pattern>/example/*</url-pattern>
</servlet-mapping>
</web-app>
한 개의 웹 어플리케이션에서 여러 개의 DispatcherServlet이 정의될 수 있으며 각각의 WebApplicationContext와 namespace, context mapping을 갖음
그리고 그 서블릿들은 ContextLoaderListener에 의해 로드 된 한 개의 Root WebApplicationContext를 상속 받으면서 infrastructure bean(service, repositories)을 공유함
WebApplicationContext에는 컨트롤러, view resolver, handler mapping 등의 빈을 포함해야 함
만약 위 예시대로 web.xml에서 example 이라는 서블릿을 정의하면 spring-MVC는 해당 웹 어플리케이션의 WEB-INF 디렉토리에서 example-servlet.xml 파일을 찾음
그리고 그 파일에 정의된 빈들을 스프링 IoC 컨테이너에 생성함
/WEB-INF/'서블릿 이름'-servlet.xml
<servlet> 엘리먼트에서 contextConfigLocation 파라미터로 경로를 직접 지정할 수 있음
아래에 이름이 'dispatcher'인 서블릿은 <param-value>가 빈칸임
그리고 <context-param>으로 Root-context.xml 경로를 설정함
이 경우엔 Root WebApplicationConext가 단독으로 모든 빈 설정(controller, viewresolver, handler mapping, service, respositories)을 보관하게 됨
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/root-context.xml</param-value>
</context-param>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
이클립스 STS에서 스프링 MVC 프로젝트 생성 후 web.xml의 기본 설정
root-context.xml에는 프로젝트의 모든 웹 컴포넌트가 공유할 리소스(datasource, repository)를 설정하고
servlet-context.xml에서는 request-processing infrastructure를 설정함
예를 들면 controller, viewresolver, 리소스(css, 이미지파일) 등이 있음
출처 및 참고자료
https://docs.spring.io/spring/docs/5.0.0.RC3/spring-framework-reference/web.html#mvc-servlet
'프로그래밍 > Spring' 카테고리의 다른 글
11.23(MVC1 패턴과 MVC2 패턴) (0) | 2020.11.23 |
---|---|
11.19(MyBatis 연동) (0) | 2020.11.19 |
11.17(MVC 뷰 구현) (0) | 2020.11.17 |
11.09(Spring Security - 사용자 인증) (0) | 2020.11.09 |
11.06(Spring Security - security 권한 생성) (0) | 2020.11.06 |