-
스프링 - DispatcherServlet과 web.xml 설정웹프로그래밍/spring 2018. 12. 1. 17:50
-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' 카테고리의 다른 글
스프링 4.0 - myBatis 연동 (0) 2018.08.02 스프링4.0 - 뷰 규현 : 커스텀태그 정리 (0) 2018.07.21 스프링4.0 - MVC : 뷰 구현 (0) 2018.07.21 스프링4.0 - XML/JSON 변환처리 (0) 2018.07.19 스프링4.0-WebApplicationContext 계층 : 다수의 DispatcherServlet 설정 (0) 2018.07.18