2015-04-01 60 views
3

我從劃痕設置項目,目前我正在配置Spring MVC 4.1.5使用java配置的步驟。整個應用程序正在運行在tomcat gradle插件上。Spring MVC配置啓用

有人可以解釋爲什麼我需要撥打以下電話DefaultServletHandlerConfigurer爲了請求映射到我的控制器?

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

未啓用它,我的所有請求都被拒絕,服務器說沒有針對特定請求的映射。

我看春天doc找出來,但是描述並沒有告訴我太多。

啓用轉發到「默認」Servlet。當使用此方法 時,DefaultServletHttpRequestHandler將嘗試自動檢測 「默認」Servlet名稱。或者,您可以通過enable(String)指定 默認Servlet的名稱。

回答

4

這在Spring MVC部分文檔here中有很好的解釋。

這使得映射的DispatcherServlet爲「/」(從而代替 容器的默認的Servlet的映射),同時還允許 靜態資源請求由容器的默認 的Servlet處理。它使用「/ **」映射的URL 和相對於其他URL 映射的最低優先級來配置DefaultServletHttpRequestHandler。

該處理程序將把所有請求轉發給默認的Servlet。 因此重要的是它保持最後的所有 其他URL HandlerMappings的順序。如果您使用 或者您正在設置 自定義的HandlerMapping實例,請確保將其訂單 屬性的值設置爲低於 DefaultServletHttpRequestHandler(Integer.MAX_VALUE)的值。

這段代碼是等同於XML行<mvc:default-servlet-handler/>在Spring Web MVC框架,特定組件文件servletname-servlet.xml中通常被定義

你必須使用電話,以配置轉發到Spring默認的Servlet,如果你不讓你的服務器嘗試使用他自己的servlet處理,並且如你所解釋的那樣,如果你沒有任何特定的定義,它將找不到你的請求的任何映射。