默认 Servlet
Spring MVC 允许将DispatcherServlet
to (从而覆盖映射
),同时仍然允许静态资源请求为
由容器的默认 Servlet 处理。它配置了一个/
DefaultServletHttpRequestHandler
其中 URL 映射为 且优先级最低
相对于其他 URL 映射。/**
此处理程序将所有请求转发到默认 Servlet。因此,它必须
按所有其他 URL 的顺序保持最后HandlerMappings
.那就是
case 如果您使用<mvc:annotation-driven>
.或者,如果您设置了
自有定制HandlerMapping
实例,请务必将其order
property 设置为值
低于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
对于
default Servlet 必须按名称而不是按路径检索。这DefaultServletHttpRequestHandler
尝试自动检测 的默认 Servlet
容器,使用大多数主要 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"/>