首先需要明確幾容易混淆的規則:
servlet容器中的匹配規則既不是簡單的通配,也不是正規表示式,而是特定的規則。所以不要用萬用字元或者正規表示式的匹配規則來看待servlet的url-pattern。
url-pattern對映匹配過程是有優先順序的
而且當有乙個servlet匹配成功以後,就不會去理會剩下的servlet了。
中配置的項必須與url完全精確匹配。
<注意:另外上述url後面可以跟任意的查詢條件,都會被匹配,如>
<
servlet-name
>myservlet
servlet-name
>
<
url-pattern
>/user/users.html
url-pattern
>
<
url-pattern
>/index.html
url-pattern
>
<
url-pattern
>/user/adduser.action
url-pattern
>
>
以「*.」開頭的字串被用於副檔名匹配
<以「/」字元開頭,並以「/*」結尾的字串用於路徑匹配>
<
servlet-name
>myservlet
servlet-name
>
<
url-pattern
>*.jsp
url-pattern
>
<
url-pattern
>*.action
url-pattern
>
>
<>
<
servlet-name
>myservlet
servlet-name
>
<
url-pattern
>/user/*
url-pattern
>
>
<預設匹配,以上都找不到servlet,就用預設的servlet,配置為/>
<
servlet-name
>myservlet
servlet-name
>
<
url-pattern
>/
url-pattern
>
>
匹配方法只有三種,要麼是路徑匹配(以「/」字元開頭,並以「/*」結尾),要麼是副檔名匹配(以「*.」開頭),要麼是精確匹配,三種匹配方法不能進行組合,不要想當然使用萬用字元或正則規則。
如/user/*.action是非法的
另外注意:/aa/*/bb是精確匹配,合法,這裡的*不是通配的含義
tomcat在%catalina_home%\conf\web.xml檔案中配置了預設的servlet,配置**如下
<「/*」和「/」均會攔截靜態資源的載入,需要特別注意servlet
>
<
servlet-name
>default
servlet-name
>
<
servlet-class
>org.apache.catalina.servlets.defaultservlet
servlet-class
>
<
init-param
>
<
param-name
>debug
param-name
>
<
param-value
>0
param-value
>
init-param
>
<
init-param
>
<
param-name
>listings
param-name
>
<
param-value
>false
param-value
>
init-param
>
<
load-on-startup
>1
load-on-startup
>
servlet
>
<
servlet
>
<
servlet-name
>jsp
servlet-name
>
<
servlet-class
>org.apache.jasper.servlet.jspservlet
servlet-class
>
<
init-param
>
<
param-name
>fork
param-name
>
<
param-value
>false
param-value
>
init-param
>
<
init-param
>
<
param-name
>xpoweredby
param-name
>
<
param-value
>false
param-value
>
init-param
>
<
load-on-startup
>3
load-on-startup
>
servlet
>
<
>
<
servlet-name
>default
servlet-name
>
<
url-pattern
>/
url-pattern
>
>
<
>
<
servlet-name
>jsp
servlet-name
>
<
url-pattern
>*.jsp
url-pattern
>
<
url-pattern
>*.jspx
url-pattern
>
>
對映的url對應的
servlet
/hello
servlet1
/bbs/admin/*
servlet2
/bbs/*
servlet3
*.jsp
servlet4
/servlet5
實際請求對映的結果
去掉上下文路徑的剩餘路徑
處理請求的
servlet
/hello
servlet1
/bbs/admin/login
servlet2
/bbs/admin/index.jsp
servlet2
/bbs/display
servlet3
/bbs/index.jsp
servlet3
/bbs
servlet3
/index.jsp
servler4
/hello/index.jsp
servlet4
/hello/index.html
servlet5
/news
servlet5
Servlet學習 servlet的生命週期
servlet介面中定義了作為乙個servlet在整個生命週期中應該擁有三個階段 1,初始化 2,服務 3,銷毀 servlet的生命週期是由容器管理的 servlet的生命週期 簡化版 適用於筆試的時候 1,servlet的生命週期是由容器管理的 這句話非常重要 2.他分別經歷三個階段 初始化 服...
Servlet入門 servlet路徑問題
1.servlet路徑 url pattern 作用 將乙個請求網路位址和servlet類建立乙個對映關係 servlet可以對映多個url 例如 myservlet com.test.myservlet myservlet mmmyservlet kk2.url對映模式 配置 url位址取值可以是...
Servlet高階應用 Servlet與快取
一 設定快取檔案的有效日期 重點方法 httpservletrequest類 1 string getrequesturi 獲取客戶端位址列的路徑值 httpservletresponse類 2 void setdateheader string name,long endtime name 對應的...