【问题标题】:Spring MVC configuration enableSpring MVC 配置启用
【发布时间】:2015-06-06 07:38:42
【问题描述】:

我正在从头开始建立一个项目,目前我正在使用 java config 配置Spring MVC 4.1.5。整个应用程序都在 tomcat gradle 插件上运行。

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

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

如果不启用它,我的所有请求都会被拒绝,并且服务器说没有特定请求的映射。

我阅读了 spring doc 来找出答案,但描述并没有告诉我太多。

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

【问题讨论】:

    标签: java spring spring-mvc configuration


    【解决方案1】:

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

    这允许将 DispatcherServlet 映射到“/”(因此覆盖 容器的默认 Servlet 的映射),同时仍然允许 由容器默认处理的静态资源请求 小服务程序。它使用 URL 配置 DefaultServletHttpRequestHandler "/**" 的映射以及相对于其他 URL 的最低优先级 映射。

    此处理程序会将所有请求转发到默认 Servlet。 因此,重要的是它在所有的顺序中保持在最后 其他 URL HandlerMappings。如果你使用就会出现这种情况 或者,如果您正在设置您的 自己定制的HandlerMapping实例一定要设置它的顺序 财产价值低于 DefaultServletHttpRequestHandler,即 Integer.MAX_VALUE。

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

    您必须使用该调用来配置对 Spring 默认 Servlet 的转发,如果您不让您的服务器将尝试使用他自己的 servlet 处理,并且正如您所解释的,如果您没有任何特定的定义它不会为您的请求找到任何映射。

    【讨论】:

      猜你喜欢
      • 2014-06-08
      • 2011-01-08
      • 2012-12-16
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多