Spring MVC配置启用
问题内容:
我正在从头开始建立一个项目,目前我正在Spring MVC 4.1.5
使用java config进行配置。整个应用程序运行在tomcat
gradle插件上。
有人可以解释一下为什么我需要对类进行以下调用DefaultServletHandlerConfigurer
才能将请求映射到我的控制器吗?
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
没有启用它,我的所有请求都将被拒绝,并且服务器说没有针对特定请求的映射。
我阅读了Spring 文档以查找答案,但是说明并没有告诉我太多。
启用转发到“默认” Servlet的功能。使用此方法时,DefaultServletHttpRequestHandler将尝试自动检测“默认”
Servlet名称。另外,您可以通过enable(String)指定默认Servlet的名称。
问题答案:
这是Spring MVC的部分文档中很好的解释在这里。
这允许将DispatcherServlet映射到“
/”(从而覆盖容器的默认Servlet的映射),同时仍允许容器的默认Servlet处理静态资源请求。它使用URL映射“ /
**”配置DefaultServletHttpRequestHandler,并且相对于其他URL映射具有最低优先级。该处理程序会将所有请求转发到默认Servlet。因此,保持所有其他URL
HandlerMappings的顺序最后是很重要的。如果您使用这种情况,或者要设置自己的自定义HandlerMapping实例,请确保将其order属性的值设置为小于DefaultServletHttpRequestHandler的Integer.MAX_VALUE的值。
该段代码相当于<mvc:default-servlet-handler/>
通常定义为servletname-servlet.xml的特定于Spring
Web MVC的组件文件中的xml行。
您必须使用该调用才能配置到Spring默认Servlet的转发,如果您不这样做,则服务器将尝试使用其自己的Servlet处理,并且如您所解释的,如果您没有任何特定的定义,则它将赢得找不到您的请求的任何映射。