Spring MVC配置启用

ash*_*hur 5 java configuration spring spring-mvc

我正在设置一个划痕项目,目前我正在Spring MVC 4.1.5使用java 配置进行配置.整个应用程序正在tomcat gradle插件上运行.

有人可以解释我为什么我需要对类进行以下调用DefaultServletHandlerConfigurer才能将请求映射到我的控制器?

@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    configurer.enable();
}
Run Code Online (Sandbox Code Playgroud)

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

我看了春天的文档要找出来,但描述并没有告诉我太多.

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

Lea*_*edo 5

这是Spring MVC的部分文档中很好的解释在这里.

这允许将DispatcherServlet映射到"/"(从而覆盖容器的默认Servlet的映射),同时仍允许容器的默认Servlet处理静态资源请求.它配置DefaultServletHttpRequestHandler,其URL映射为"/**",并且相对于其他URL映射具有最低优先级.

此处理程序将所有请求转发到默认Servlet.因此,重要的是它按照所有其他URL HandlerMappings的顺序保持最后.如果您使用或者如果您要设置自己的自定义HandlerMapping实例,请确保将其order属性设置为低于DefaultServletHttpRequestHandler的值,即Integer.MAX_VALUE.

<mvc:default-servlet-handler/>这段代码相当于Spring Web MVC特定组件文件中的xml行,通常定义为servletname-servlet.xml

您必须使用该调用才能配置转发到Spring默认Servlet,如果您不使您的服务器将尝试使用他自己的servlet处理并按照您的解释,如果您没有任何特定的定义它赢了找不到您的请求的任何映射.