此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Framework 6.2.10! |
默认 Servlet
Spring MVC 允许映射DispatcherServlet
到 (从而覆盖映射
容器的默认 Servlet),同时仍然允许静态资源请求
由容器的默认 Servlet 处理。它配置了一个/
DefaultServletHttpRequestHandler
URL 映射为 和 最低优先级
相对于其他 URL 映射。/**
此处理程序将所有请求转发到默认 Servlet。因此,它必须
按所有其他 URL 的顺序保留在最后HandlerMappings
.那就是
如果使用<mvc:annotation-driven>
.或者,如果您将
自己定制HandlerMapping
实例,请务必将其order
属性设置为值
低于DefaultServletHttpRequestHandler
,即Integer.MAX_VALUE
.
以下示例演示如何使用默认设置启用该功能:
-
Java
-
Kotlin
-
Xml
@Configuration
public class WebConfiguration implements WebMvcConfigurer {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
@Configuration
class WebConfiguration : WebMvcConfigurer {
override fun configureDefaultServletHandling(configurer: DefaultServletHandlerConfigurer) {
configurer.enable()
}
}
<mvc:default-servlet-handler/>
覆盖 Servlet 映射的警告是/
RequestDispatcher
对于
默认 Servlet 必须按名称而不是路径检索。这DefaultServletHttpRequestHandler
尝试自动检测
启动时的容器,使用大多数主要 Servlet 的已知名称列表
容器(包括 Tomcat、Jetty、GlassFish、JBoss、WebLogic 和 WebSphere)。
如果默认 Servlet 已使用不同的名称进行自定义配置,或者如果
在默认 Servlet 名称未知的情况下使用不同的 Servlet 容器,
那么您必须显式提供默认的 Servlet 名称,如以下示例所示:
-
Java
-
Kotlin
-
Xml
@Configuration
public class CustomDefaultServletConfiguration implements WebMvcConfigurer {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable("myCustomDefaultServlet");
}
}
@Configuration
class CustomDefaultServletConfiguration : WebMvcConfigurer {
override fun configureDefaultServletHandling(configurer: DefaultServletHandlerConfigurer) {
configurer.enable("myCustomDefaultServlet")
}
}
<mvc:default-servlet-handler default-servlet-name="myCustomDefaultServlet"/>