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