在使用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也同樣。空間上 只能傳送請求的...