servlet配置url-pattern的匹配規則
阿新 • • 發佈:2018-11-30
... 調用 mapping 最長路 true 進行 brush 匹配規則 name
<servlet> <servlet-name>hello</servlet-name> <servlet-class>com.qf.servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
擴展名匹配
url-pattern配置的內容是*.aa、*.bb、*.jsp這種類型的
<servlet> <servlet-name>hello</servlet-name> <servlet-class>com.qf.servlet.HelloServlet3</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>*.hello</url-pattern> </servlet-mapping>
路徑匹配
1.全路徑匹配:請求訪問的url的地址必須與url-pattern配置的內容完全一致
<servlet> <servlet-name>hello</servlet-name> <servlet-class>com.qf.servlet.HelloServlet3</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/aa/bb/hello</url-pattern> </servlet-mapping>
2.路徑匹配:前半段完全匹配,後半段存在*(*是通配符,可以代表任何字符串);以/開始,以*結束;/aa/*可以是/aa/bb,也可以是/aa/cc..............
<servlet> <servlet-name>hello</servlet-name> <servlet-class>com.qf.servlet.HelloServlet3</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/aa/*</url-pattern> </servlet-mapping>
註意:/aa/*/*這種url-pattern配置,url訪問時必須是/aa/*/aa,/aa/*/bb這種才可以訪問,也就是中間這個*並不是通配符,只是一個普通字符
路徑匹配和擴展名匹配不可以同時使用,下面幾個配置全是不合法的
<url-pattern>/aa/*.hello</url-pattern> <url-pattern>/*.hello</url-pattern> <url-pattern>a*.hello</url-pattern>
註意:
< url-pattern>/</url-pattern> 會匹配到/login這樣的路徑型url,不會匹配到模式為*.jsp這樣的後綴型url
< url-pattern>/*</url-pattern> 會匹配所有url:路徑型的和後綴型的url(包括/login,*.jsp,*.js和*.html等)
當一個url與多個servlet的匹配規則可以匹配時,則按照 “ 完全匹配路徑 > 最長路徑>擴展名”這樣的優先級匹配到對應的servlet
- servlet1 的url-pattern是 /test,servlet2的url-pattern是 /* ,訪問的url為http://localhost:8080/test ,容器就會先進行完全路徑匹配,發現/test正好被servlet1精確匹配,那麽就去調用servlet1,不會去管servlet2
- servlet1的url-pattern為/test/*,servlet2的url-pattern為/test/a/*,訪問的url是http://localhost:8080/test/a時,容器會選擇路徑最長的servlet來匹配,也就是這裏的servlet2
- servlet1的url-pattern是*.action ,servlet2的url-pattern為 /* ,訪問的url為http://localhost:8080/test.action,這個時候容器就會優先進行路徑匹配,而不是去匹配擴展名,這樣就去調用servlet2
servlet配置url-pattern的匹配規則