Default Servlet

Dev.Hammy·2024년 4월 8일
0

Spring MVC는 DispatcherServlet/에 매핑(따라서 컨테이너의 기본 서블릿 매핑을 재정의함)하는 동시에 static 리소스 요청이 컨테이너의 기본 서블릿에 의해 처리되도록 허용합니다. /**의 URL 매핑과 다른 URL 매핑에 비해 우선순위가 가장 낮은 DefaultServletHttpRequestHandler를 구성합니다.

이 핸들러는 모든 요청을 기본 서블릿으로 전달합니다. 따라서 다른 모든 URL HandlerMappings의 순서에서 마지막에 남아 있어야 합니다. <mvc:annotation-driven>을 사용하는 경우가 그렇습니다. 또는 자체적으로 사용자 정의된 HandlerMapping 인스턴스를 설정하는 경우 order 속성(property)을 DefaultServletHttpRequestHandler의 값(Integer.MAX_VALUE)보다 낮은 값으로 설정해야 합니다.

다음 예에서는 기본 설정을 사용하여 기능을 활성화하는 방법을 보여줍니다.

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

	@Override
	public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
		configurer.enable();
	}
}

다음 예에서는 XML에서 동일한 구성을 달성하는 방법을 보여줍니다.

<mvc:default-servlet-handler/>

/ Servlet 매핑을 재정의할 때 주의할 점은 기본 Servlet에 대한 RequestDispatcher를 경로가 아닌 이름으로 검색해야 한다는 것입니다. DefaultServletHttpRequestHandler는 대부분의 주요 서블릿 컨테이너(Tomcat, Jetty, GlassFish, JBoss, Resin, WebLogic 및 WebSphere 포함)에 대해 알려진 이름 목록을 사용하여 시작 시 컨테이너의 기본 서블릿을 자동 감지하려고 시도합니다. 기본 서블릿이 다른 이름으로 사용자 정의 구성되었거나 기본 서블릿 이름을 알 수 없는 다른 서블릿 컨테이너가 사용되는 경우 다음 예와 같이 기본 서블릿 이름을 명시적으로 제공해야 합니다.

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

	@Override
	public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
		configurer.enable("myCustomDefaultServlet");
	}
}

다음 예에서는 XML에서 동일한 구성을 달성하는 방법을 보여줍니다.

<mvc:default-servlet-handler default-servlet-name="myCustomDefaultServlet"/>

0개의 댓글