W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
這些配置允許你將DispatcherServlet
映射到"/"路徑(也即覆蓋了容器默認Servlet的映射),但依然保留容器默認的Servlet以處理靜態(tài)資源的請求。這可以通過配置一個URL映射到"/**"的處理器DefaultServletHttpRequestHandler
來實現(xiàn),并且該處理器在其他所有URL映射關系中優(yōu)先級應該是最低的。
該處理器會將所有請求轉發(fā)(forward)到默認的Servlet,因此需要保證它在所有URL處理器映射HandlerMappings
的最后。如果你是通過<mvc:annotation-driven>
的方式進行配置,或自己定制了HandlerMapping
實例,那么你需要確保該處理器order
屬性的值比DefaultServletHttpRequestHandler
的次序值Integer.MAXVALUE
小。
使用默認的配置啟用該特性,你可以:
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
XML命名空間只需一行:
<mvc:default-servlet-handler/>
不過需要注意,覆寫了"/"的Servlet映射后,默認Servlet的RequestDispatcher
就必須通過名字而非路徑來取得了。DefaultServletHttpRequestHandler
會嘗試在容器初始化的時候自動檢測默認Servlet,這里它使用的是一份主流Servlet容器(包括Tomcat、Jetty、GlassFish、JBoss、Resin、WebLogic,和WWebSphere)已知的名稱列表。如果默認Servlet被配置了一個其他的名字,或者使用了一個列表里未提供默認Servlet名稱的容器,那么默認Servlet的名稱必須被顯式指定。正如下面代碼所示:
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable("myCustomDefaultServlet");
}
}
XML命名空間的配置方式:
<mvc:default-servlet-handler default-servlet-name="myCustomDefaultServlet"/>
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: