JAVAWEB學習(4) — 處理請求資源路徑
阿新 • • 發佈:2018-11-24
Servlet 容器如何處理請求資源路徑
1. 什麼是請求資源路徑
在瀏覽器位址列輸入:http://ip:port/appName/xxx.html
其中 /appName/xxx.html 就是請求資源路徑
容器預設認為訪問的是一個servlet,所以,會檢視web.xml配置,看有沒有匹配的servlet
2. Web伺服器對請求路徑的處理過程
在瀏覽器位址列輸入:http://ip:port/appName/xxx.html
- 瀏覽器依據ip,port建立與Servlet容器之間的連線,然後將請求資源路徑/appName/xxx.html 傳送過去給容器
- 容器依據應用名“/appName”找到應用所在的資料夾,容器會預設請求的是一個Servlet,查詢web.xml檔案中所有的Servlet配置“”,看是否有匹配的<url-pattern>
- 找到匹配的值之後再按照<servlet-name>完成對應關係的查詢,進而找到要執行的Servlet
- 如果沒有查詢匹配的servlet,容器會查詢對應位置的檔案
- 如果沒有找到對應位置的檔案就會返回404錯誤
3. 匹配servlet的規則
-
精準匹配
具體資源名稱與web.xml檔案中的url-pattern嚴格匹配相等才執行
<servlet> <servlet-name>someServlet</servlet-name> <servlet-class>test.MyServlet</
-
萬用字元匹配
使用"*"匹配一個或者多個任意的字元
<servlet> <servlet-name>someServlet</servlet-name> <
-
字尾匹配
在配置url-pattern節點時,不使用斜槓開頭,用“*.”開頭來匹配任意多個字元
<servlet> <servlet-name>someServlet</servlet-name> <servlet-class>test.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>someServlet</servlet-name> <!-- 會匹配所有以.do結尾的請求 --> <url-pattern>*.do</url-pattern> </servlet-mapping>
優先順序最高的是 精確匹配
4. 如何讓一個Servlet處理多種請求
-
採用字尾匹配
<servlet> <servlet-name>someServlet</servlet-name> <servlet-class>test.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>SomeServlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
-
分析請求資源路徑,進行相應的處理