首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

深入解析 web.xml 中的 url-pattern 映射機制

     編輯:Java 綜合教學

一、什麼是 url-pattern 映射?

當請求發送到 Servlet 容器時,容器會解析 URL,移除協議、主機、端口及 Context Path,剩下的 Servlet Path 即為 url-pattern 映射的依據。

例如:https://localhost:8080/myservlet/DisplayHeader?method=show

  • http: 傳輸協議
  • localhost: 主機地址
  • 8080: 端口號
  • myservlet: contextPath
  • DisplayHeader: servletPath(映射關鍵部分)
  • method=show: 參數

因此,url-pattern 映射的核心是 DisplayHeader 這一段路徑。

二、映射規則與優先級

1. 映射規則分類

  • 精確匹配:指定具體 URL,不含通配符,如 /target.jsp
  • 模糊匹配:包含通配符
    • 前綴匹配:路徑前段固定,後段用 *,如 /happy/*
    • 後綴匹配:路徑後段固定,前段用 *,如 *.jsp、*.jpg
    • 注意:不允許在中間使用通配符,如 /happy/*.jsp 非法
  • 根路徑匹配:/

2. 內部處理機制(Wrapper 分類)

Tomcat 將不同映射類型的 Servlet 封裝為不同 Wrapper:

  • 前綴匹配 → wildcardWrappers
  • 後綴匹配 → extensionWrappers
  • 根路徑 / → defaultWrapper
  • 精確匹配及其他 → exactWrappers

3. 匹配優先級順序(高到低)

  1. 精確匹配(exactWrappers)
  2. 前綴匹配(wildcardWrappers,如 /*)
  3. 後綴匹配(extensionWrappers,如 *.action,Tomcat 自動註冊 .jsp/.jspx)
  4. 歡迎資源(welcomeResources,當 servletPath 為空時)
  5. 默認 Servlet(defaultWrapper,即 /)

簡記:精確 > 前綴 > 後綴 > 歡迎頁 > 默認

三、常見問題:為何 Servlet 用 / 而 Filter 用 /*?

/* 優先級極高,幾乎攔截所有請求(含靜態資源),適合 Filter 鏈逐個處理;但 Servlet 僅單一匹配,若用 /* 會阻礙靜態資源訪問及其他 Servlet,故通常配置為 / 作為默認入口。

四、參考資料

Tomcat url-pattern 解析

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved