2015-04-01 52 views
3

我从划痕设置项目,目前我正在配置Spring MVC 4.1.5使用java配置的步骤。整个应用程序正在运行在tomcat gradle插件上。Spring MVC配置启用

有人可以解释为什么我需要拨打以下电话DefaultServletHandlerConfigurer为了请求映射到我的控制器?

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

未启用它,我的所有请求都被拒绝,服务器说没有针对特定请求的映射。

我看春天doc找出来,但是描述并没有告诉我太多。

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

回答

4

这在Spring MVC部分文档here中有很好的解释。

这使得映射的DispatcherServlet为“/”(从而代替 容器的默认的Servlet的映射),同时还允许 静态资源请求由容器的默认 的Servlet处理。它使用“/ **”映射的URL 和相对于其他URL 映射的最低优先级来配置DefaultServletHttpRequestHandler。

该处理程序将把所有请求转发给默认的Servlet。 因此重要的是它保持最后的所有 其他URL HandlerMappings的顺序。如果您使用 或者您正在设置 自定义的HandlerMapping实例,请确保将其订单 属性的值设置为低于 DefaultServletHttpRequestHandler(Integer.MAX_VALUE)的值。

这段代码是等同于XML行<mvc:default-servlet-handler/>在Spring Web MVC框架,特定组件文件servletname-servlet.xml中通常被定义

你必须使用电话,以配置转发到Spring默认的Servlet,如果你不让你的服务器尝试使用他自己的servlet处理,并且如你所解释的那样,如果你没有任何特定的定义,它将找不到你的请求的任何映射。