Skip to Content
Suffering builds character

4.DispatcherServlet 적용

1. DispatcherServlet 전체 상속 계층도

DispatcherServlet의 상속 계층도를 따라가보면 GenericServlet → HttpServlet → … → FrameWorkServlet 을 확장(extends)한 서블릿인 것을 확인할 수 있음

    → DispatcherServlet은 서블릿

    2. DispatcherServlet 사용 방법

    DispatcherServlet은 결국 Servlet이기 때문에,

    스프링 컨테이너에서 스프링 빈으로써 관리되는 것이 아닌 서블릿 컨테이너에서 하나의 서블릿으로 관리됨

    따라서 이러한 DispatcherServlet을 Spring 애플리케이션에서 사용하기 위해서는, DispatcherServlet을 서블릿 컨테이너에 등록해야함

    3. DispatcherServlet을 서블릿 컨테이너에 등록

    DispatcherServlet을 서블릿 컨테이너에 등록하기 위한 방법은 크게 2가지로 구분됨

    1. .xml 기반의 설정 파일 - web.xml
    2. .java 기반의 설정 파일 - 별도의 .java 클래스 생성

    web.xml 설정 예시

    web.xml
    <web-app> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/app-context.xml</param-value> </context-param> <servlet> <servlet-name>app</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>app</servlet-name> <url-pattern>/app/*</url-pattern> </servlet-mapping> </web-app>

    .java 파일 설정 예시

    MyWebApplicationInitializer.java
    public class MyWebApplicationInitializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext servletContext) { // Load Spring web application configuration AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); context.register(AppConfig.class); // Create and register the DispatcherServlet DispatcherServlet servlet = new DispatcherServlet(context); ServletRegistration.Dynamic registration = servletContext.addServlet("app", servlet); registration.setLoadOnStartup(1); registration.addMapping("/app/*"); } }
    Last updated on