web.xml中url-pattern的/和/*的區別

web.xml中url-pattern的/和/*的區別:
url-pattern:指定相對於Servlet的URL的路徑。該路徑相當於web應用程序上下文的根路徑。<servlet-mapping>將URL模式映射到某個Servlet,即該Servlet處理的URL。

<url-pattern>/</url-pattern>可以匹配所有的url:路徑型的和後綴型的url(包括/query,.jsp,.js和.html等),一般用於過濾器。

<url-pattern>/</url-pattern>主要用於攔截靜態資源。會替換servlet容器中默認的servlet

我們看到 /* 對應的Servlet會被丟到wildcardWrappers中 會匹配*.jsp,會出現返回jsp視圖時再次進入spring的DispatcherServlet 類,導致找不到對應的controller所以報404錯。

*. 會被丟到extensionWrappers中

/ 會被丟到defaultWrapper中 不會匹配到.jsp,即:.jsp不會進入spring的 DispatcherServlet類 。

其他的映射都被丟到exactWrappers中

規則1:精確匹配,使用contextVersion的exactWrappers

規則2:前綴匹配,使用contextVersion的wildcardWrappers

規則3:擴展名匹配,使用contextVersion的extensionWrappers

規則4:使用資源文件來處理servlet,使用contextVersion的welcomeResources屬性,這個屬性是個字符串數組

規則7:使用默認的servlet,使用contextVersion的defaultWrapper

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章