跳到主要内容
版本:7.0.3

默认Servlet

Hunyuan 7b 中英对照 Default Servlet

Spring MVC允许将DispatcherServlet映射到/(从而覆盖容器默认Servlet的映射),同时仍允许静态资源请求由容器的默认Servlet处理。它配置了一个DefaultServletHttpRequestHandler,将其URL映射设置为/**,并且该映射具有相对于其他URL映射最低的优先级。

此处理器将所有请求转发给默认的Servlet。因此,它必须在所有其他URL HandlerMappings的顺序中位于最后一位。如果你使用 <mvc:annotation-driven>,情况就是如此。或者,如果你设置了自己定制的 HandlerMapping 实例,请确保将其 order 属性设置为低于 DefaultServletHttpRequestHandler 的值,而 DefaultServletHttpRequestHandlerorder 值为 Integer.MAX_VALUE

以下示例展示了如何使用默认设置来启用该功能:

@Configuration
public class WebConfiguration implements WebMvcConfigurer {

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

覆盖 / Servlet 映射的注意事项是,必须通过名称而不是路径来获取默认 Servlet 的 RequestDispatcherDefaultServletHttpRequestHandler 会在启动时尝试自动检测容器的默认 Servlet,它会使用大多数主要 Servlet 容器(包括 Tomcat、Jetty、GlassFish、JBoss、WebLogic 和 WebSphere)的已知名称列表来进行检测。如果默认 Servlet 被自定义配置为不同的名称,或者使用的 Servlet 容器不同导致默认 Servlet 的名称未知,那么就必须明确提供默认 Servlet 的名称,如下例所示:

@Configuration
public class CustomDefaultServletConfiguration implements WebMvcConfigurer {

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