servlet中的url pattern匹配規則

2021-09-14 03:47:29 字數 1128 閱讀 4801

在使用servlet或filter進行url請求的匹配時,可以定義不同的匹配規則,如下所示:

1、精確匹配

中配置的項必須與url完全匹配。

/kata/detail.html

/demo.html

/table

注意:另外上述url後面可以跟任意的查詢條件,都會被匹配,如

在使用精確匹配時,可以使用/useraction.do進行匹配。

2、副檔名匹配

*.jsp

注意:路徑和副檔名匹配無法同時設定,比如下面的三個都是非法的,如果設定,啟動tomcat伺服器會報錯。

/kata/*.jsp

/*.jsp

he*.jsp

另外注意:/aa/*/bb

這個是精確匹配,url必須是 /aa/*/bb,這裡的*不是通配的含義

3、匹配任意的url

如果配置成如下兩種的任意一種//*

則所有的url都可以被匹配上。其中/*是路徑匹配,只是路徑就是/。

4、優先順序

當乙個url與多個servlet的匹配規則可以匹配時,則按照 「 精確路徑 > 最長路徑》副檔名」這樣的優先順序匹配到對應的servlet。舉例如下:

例1:比如servleta 的url-pattern為 /test,servletb的url-pattern為 /* ,這個時候,如果我訪問的url為http://localhost/test ,這個時候容器就會先進行精確路徑匹配,發現/test正好被servleta精確匹配,那麼就去呼叫servleta,不會去管servletb。

例2:比如servleta的url-pattern為/test/*,而servletb的url-pattern為/test/a/*,此時訪問http://localhost/test/a時,容器會選擇路徑最長的servlet來匹配,也就是這裡的servletb。 

例3: 比如servleta的url-pattern:*.action ,servletb的url-pattern為 /* ,這個時候,如果我訪問的url為http://localhost/test.action,這個時候容器就會優先進行路徑匹配,而不是去匹配副檔名,這樣就去呼叫servletb。

servlet中的跳轉

在servlet中,從乙個servlet跳到另乙個servlet,有基於客戶端和伺服器兩個不同的方法。1.基於客戶端,及傳送301,進行重定向 response.sendredirect url 其中 url 是位址的字串,以 開頭是根目錄開始,否則是相對位址。2.基於伺服器,進行分派。reques...

Servlet的PrintWrite的中文亂碼

首先觀察如下 可惜瀏覽器返回的是?原因 1.當辦事器呼叫servlet時同時建立乙個request和response物件,request用來儲存客戶端傳送請求,response用來儲存辦事器返回的資料 2.當servlet拿著 檔案上傳成功 去查它的預設編碼表,sun公司顯然是查國外碼表,之後儲存在...

servlet中ServletConfig的使用

httpservletrequest,httpservletresponse 這兩個屬性的作用範圍最小。時間上 只是本身請求和應答完成就失效,當然 是把當前的request物件取出來傳給另一 個資源,其實本身的request物件還是只生存到本次請求結束,response也同樣。空間上 只能傳送請求的...