我正在从头开始建立一个项目,目前我正在配置Spring MVC 4.1.5
使用java配置。整个应用程序正在 tomcat gradle 插件上运行。
有人可以解释一下为什么我需要对班级进行以下调用DefaultServletHandlerConfigurer
为了使请求映射到我的控制器?
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
如果不启用它,我的所有请求都将被拒绝,并且服务器表示没有特定请求的映射。
我读过《春天》doc http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/config/annotation/DefaultServletHandlerConfigurer.html#enable--找出答案,但描述并没有告诉我太多。
启用转发到“默认”Servlet。当使用该方法时
DefaultServletHttpRequestHandler 将尝试自动检测
“默认”Servlet 名称。或者,您可以指定名称
通过enable(String)默认Servlet。
Spring MVC 部分文档对此进行了很好的解释here http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-default-servlet-handler.
这允许将 DispatcherServlet 映射到“/”(从而覆盖
容器默认 Servlet 的映射),同时仍然允许
由容器默认处理的静态资源请求
小服务程序。它使用 URL 配置 DefaultServletHttpRequestHandler
“/**”和相对于其他 URL 的最低优先级的映射
映射。
该处理程序会将所有请求转发到默认 Servlet。
因此,重要的是它在所有顺序中保持最后。
其他 URL 处理程序映射。如果你使用的话就会出现这种情况
或者如果您正在设置您的
自己定制的HandlerMapping实例一定要设置它的顺序
属性的值低于
DefaultServletHttpRequestHandler,即 Integer.MAX_VALUE。
那段代码相当于xml那行<mvc:default-servlet-handler/>
在 Spring Web MVC 特定的组件文件中,通常定义为 servletname-servlet.xml
你必须使用该调用才能配置转发到 Spring 默认 Servlet,如果你不这样做,你的服务器将尝试使用他自己的 servlet 处理,正如你所解释的,如果你没有任何特定的定义,它将不会找不到符合您请求的任何映射。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)