Spring MVC配置启用

6
我正在从头开始设置一个项目,目前正在使用Java配置步骤中配置Spring MVC 4.1.5。整个应用程序正在使用Tomcat Gradle插件运行。
有人能为我解释一下为什么需要调用DefaultServletHandlerConfigurer类才能将请求映射到我的控制器吗?
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    configurer.enable();
}

如果不启用它,我所有的请求都将被拒绝,服务器会说没有特定请求的映射。

我阅读了Spring的文档以获取更多信息,但是描述并没有告诉我太多。

启用转发到“默认”Servlet。使用此方法时,DefaultServletHttpRequestHandler将尝试自动检测“默认”Servlet名称。或者,您可以通过enable(String)指定默认Servlet的名称。

1个回答

5
在Spring MVC文档的这里非常详细地解释了这一点。
这允许将DispatcherServlet映射到“/”(从而覆盖容器的默认Servlet的映射),同时仍然允许静态资源请求由容器的默认Servlet处理。 它使用URL映射“/**”配置了一个DefaultServletHttpRequestHandler,并相对于其他URL映射具有最低优先级。
该处理程序将转发所有请求到默认Servlet。因此,它很重要保持在所有其他URL HandlerMappings的顺序中处于最后一个。如果使用,就会出现这种情况。或者,如果您正在设置自定义HandlerMapping实例,则一定要将其order属性设置为小于DefaultServletHttpRequestHandler的值,即Integer.MAX_VALUE。
那段代码相当于Spring Web MVC特定组件文件中定义的xml行<mvc:default-servlet-handler/>
必须使用该调用才能配置转发到Spring默认Servlet,如果不这样做,服务器将尝试使用自己的servlet处理方式,如您所解释的那样,如果没有定义任何特定内容,则不会找到任何请求的映射。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接