对于最新的稳定版本,请使用 Spring Framework 6.2.0spring-doc.cadn.net.cn

默认 Servlet

Spring MVC 允许将DispatcherServletto (从而覆盖映射 ),同时仍然允许静态资源请求为 由容器的默认 Servlet 处理。它配置了一个/DefaultServletHttpRequestHandler其中 URL 映射为 且优先级最低 相对于其他 URL 映射。/**spring-doc.cadn.net.cn

此处理程序将所有请求转发到默认 Servlet。因此,它必须 按所有其他 URL 的顺序保持最后HandlerMappings.那就是 case 如果您使用<mvc:annotation-driven>.或者,如果您设置了 自有定制HandlerMapping实例,请务必将其orderproperty 设置为值 低于DefaultServletHttpRequestHandler,即Integer.MAX_VALUE.spring-doc.cadn.net.cn

以下示例显示如何使用默认设置启用该功能:spring-doc.cadn.net.cn

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

	@Override
	public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
		configurer.enable();
	}
}
@Configuration
@EnableWebMvc
class WebConfig : WebMvcConfigurer {

	override fun configureDefaultServletHandling(configurer: DefaultServletHandlerConfigurer) {
		configurer.enable()
	}
}

以下示例显示了如何在 XML 中实现相同的配置:spring-doc.cadn.net.cn

<mvc:default-servlet-handler/>

覆盖 Servlet 映射的注意事项是,/RequestDispatcher对于 default Servlet 必须按名称而不是按路径检索。这DefaultServletHttpRequestHandler尝试自动检测 的默认 Servlet 容器,使用大多数主要 Servlet 的已知名称列表 容器(包括 Tomcat、Jetty、GlassFish、JBoss、Resin、WebLogic 和 WebSphere)。 如果默认 Servlet 已使用其他名称进行自定义配置,或者如果 在默认 Servlet 名称未知的情况下使用了不同的 Servlet 容器, 然后,您必须显式提供默认 Servlet 的名称,如下例所示:spring-doc.cadn.net.cn

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

	@Override
	public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
		configurer.enable("myCustomDefaultServlet");
	}
}
@Configuration
@EnableWebMvc
class WebConfig : WebMvcConfigurer {

	override fun configureDefaultServletHandling(configurer: DefaultServletHandlerConfigurer) {
		configurer.enable("myCustomDefaultServlet")
	}
}

以下示例显示了如何在 XML 中实现相同的配置:spring-doc.cadn.net.cn

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