我正在设置一个划痕项目,目前我正在使用java config配置Spring MVC 4.1.5
。整个应用程序正在tomcat gradle插件上运行。
有人可以解释一下为什么我需要对类DefaultServletHandlerConfigurer
进行以下调用才能将请求映射到我的控制器?
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
如果没有启用它,我的所有请求都会被拒绝,服务器说没有特定请求的映射。
我读了春天doc以找出答案,但描述并没有告诉我太多。
启用转发到“默认”Servlet。使用此方法时 DefaultServletHttpRequestHandler将尝试自动检测 “默认”Servlet名称。或者,您可以指定名称 默认Servlet通过enable(String)。
答案 0 :(得分:6)
在Spring MVC部分文档here中已经很好地解释了它。
这允许将DispatcherServlet映射到“/”(从而覆盖 容器的默认Servlet的映射,同时仍然允许 静态资源请求由容器的默认值处理 Servlet的。它使用URL配置DefaultServletHttpRequestHandler 映射“/ **”和相对于其他URL的最低优先级 映射。
此处理程序将所有请求转发到默认Servlet。 因此,重要的是它保持最后的顺序 其他URL HandlerMappings。如果你使用的话就是这种情况 或者,如果你正在设置你的 自己定制的HandlerMapping实例一定要设置它的顺序 属性值低于 DefaultServletHttpRequestHandler,它是Integer.MAX_VALUE。
这段代码等同于通常定义为servletname-servlet.xml的Spring Web MVC特定组件文件中的xml行<mvc:default-servlet-handler/>
你必须使用那个调用来配置转发到Spring默认的Servlet,如果你不让你的服务器尝试使用他自己的servlet处理,如你所解释的,如果你没有任何特定的定义它将找不到您的请求的任何映射。