1. 程式人生 > >web.xml中的url-pattern寫法規則及匹配過程

web.xml中的url-pattern寫法規則及匹配過程

1.  寫法

①完全匹配:以“/”開頭,以字母(非“*”)結束    如:<url-pattern>/test/list.do</url-pattern> ②目錄匹配:以“/”開頭且以“/*”結尾    如:<url-pattern>/test/*</url-pattern>    <url-pattern>/*</url-pattern> ③副檔名匹配:以“*.”開頭,以副檔名結束    如:<url-pattern>*.do</url-pattern> ④ “/” 用來表明對應的Servlet為應用預設的Servlet。在這種情況下Servlet路徑是請求的URI去掉上下文路徑並且路徑資訊為null。

2.  匹配過程

當一個請求傳送到servlet容器的時候,容器先會將請求的url減去當前應用上下文的路徑作為servlet的對映url,比如我訪問的是http://localhost/test/aaa.html,我的應用上下文是test,容器會將http://localhost/test去掉,剩下的/aaa.html部分拿來做servlet的對映匹配。 容器會首先查詢完全匹配,如果找不到,再查詢目錄匹配,如果也找不到,就查詢副檔名匹配。如果還沒有找到一個servlet,器將嘗試為請求的資源使用內容服務,如果應用定義了一個預設servlet,則容器會將請求丟給預設servlet。 如果一個請求匹配多個“目錄匹配”,容器會選擇最長的匹配。如:servletA的url-pattern為/test/*,而servletB的url-pattern為/test/a/*,此時訪問http://localhost/test/a時,容器會選擇路徑最長的servlet來匹配,也就是這裡的servletB。