程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> Servlet/JSP 容器開發手記3 - ServletMapping的處理

Servlet/JSP 容器開發手記3 - ServletMapping的處理

編輯:關於JSP

注意: 下述所說的 URL 都未包含 ContextPath

Servlet 映射的 URL 規范

1. 以 / 開始並以 /* 結束的表示路徑映射, 即 /Test/* 表示請求路徑以 /Test/ 開始的 URL 映射到該 Servlet 處理
2. 以 *. 開始的表示擴展名映射, 即 *.abc 表示所有以擴展名為 abc 的請求映射到該 Servlet 處理
3. 以 / 開始的表示完全映射, 即 /Test 表示請求 URL 為 /Test 映射到該 Servlet 處理
4. URL Pattern 為 / 表示映射成默認的 Servlet, 當其他 URL 映射未匹配時, 使用默認的 Servlet


路徑匹配順序

1. 先匹配完全映射的 URL
2. 再次匹配路徑映射的 URL, 並且最長的路徑的匹配優先
3. 再次匹配擴展名映射
4. 最後使用默認的 Servlet

以下為示例

Servlet 映射

path pattern servlet

/foo/bar/* servlet1
/baz/*  servlet2
/catalog servlet3
*.bop  servlet4

incoming path  servlet handling request

/foo/bar/index.html servlet1
/foo/bar/index.bop servlet1
/baz   servlet2
/baz/index.html  servlet2
/catalog  servlet3
/catalog/index.html “default” servlet
/catalog/racecar.bop servlet4
/index.bop  servlet4

各種匹配模式下的 ServletPath 和 PathInfo

1. 完全匹配 ServletPath = 匹配模式 PathInfo = null
2. 擴展名匹配 ServletPath = 請求的URL PathInfo = null
3. 路徑匹配 ServletPath = 匹配模式剪去 "/*" PathInfo = 請求URL 剪去 ServletPath
4. 默認 Servlet 匹配 ServletPath = 請求的URL PathInfo = null

如果同樣的 URL 被映射到多個 Servlet 時, Serlvet 規范未做說明, tomcat(一個很好用的JSP運行平台) 使用最後一個映射的 Servlet
如果覆蓋了容器內設的 Servlet 映射, 使用新的映射

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved