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

默认 Servlet

Spring MVC 允许映射调度器服务到(因此覆盖映射 容器默认 Servlet 的 Servlet 中,同时仍允许静态资源请求 由容器默认的 Servlet 处理。它配置为/DefaultServletHttpRequestHandler其中 URL 映射为 ,优先级最低 相对于其他URL映射。/**spring-doc.cadn.net.cn

该处理程序将所有请求转发给默认的 Servlet。因此,它必须如此 保持在所有其他URL的最后一个处理器映射.那就是 如果你用<mvc:annotation-driven>.或者,如果你设置了你的 自有定制处理器映射实例,务必设置其次序性质变为某值 低于DefaultServletHttpRequestHandler,即Integer.MAX价值.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映射的注意事项是/请求调度员对于 默认 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"/>