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

為什麼 web.xml 中 不能省略斜線?Tomcat 5.0 驗證嚴格模式

     編輯:Java 程式設計入門

在 Resin 3.0.9 及舊版本中,以下寫法皆可運作,但部署到 Tomcat 5.0 會拋出異常:

嚴重: Parse error in application web.xml
java.lang.IllegalArgumentException: Invalid  * in filter mapping
    at org.apache.commons.digester.Digester.createSAXException(Digester.java:2540)
    ...

原因分析

Servlet 規範規定 <url-pattern> 必須符合特定語法:

  • 以 / 開頭的路徑對應(如 /admin/*、/servlet/*)
  • 副檔名對應(如 *.jsp、*.do)
  • 精確對應(如 /login)
  • 預設 Servlet 使用 /

* 單獨使用不合法,必須是 /*(匹配所有路徑)或 *.副檔名。Resin 較寬鬆容錯,Tomcat 5.0 嚴格遵循 Servlet 2.4/2.5 規範進行驗證。

正確寫法對照

錯誤寫法正確寫法說明
<url-pattern>*</url-pattern><url-pattern>/*</url-pattern>匹配所有請求路徑
<url-pattern>*.action</url-pattern><url-pattern>*.action</url-pattern>副檔名匹配(正確)
<url-pattern>/user/*</url-pattern><url-pattern>/user/*</url-pattern>路徑前綴匹配(正確)

解決方案

  1. 檢查 web.xml 所有 <filter-mapping> 與 <servlet-mapping> 中的 <url-pattern>。
  2. 將單獨的 * 改為 /*。
  3. 確保無空白字元(如 * )。
  4. 重新部署驗證。
遷移應用至 Tomcat 5.0+ 時,必須修正所有不符合 Servlet 規範的 URL 模式,否則啟動失敗。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved