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

Java Servlet 路徑映射完全指南:web.xml、轉發、重定向、超鏈接、ServletContext 與 ClassLoader 資源路徑對比

     編輯:Java 綜合教學

Java Servlet 路徑映射完全指南:web.xml、轉發、重定向、超鏈接、ServletContext 與 ClassLoader 資源路徑對比

Servlet 開發中路徑問題高發,本文系統梳理六大場景路徑規則,附帶對比表與最佳實踐。

六大路徑場景規則總覽

場景路徑前綴相對基準示例
1. web.xml <url-pattern>以 / 或 * 開頭專案上下文根/servlet/*, *.do
2. 轉發/包含 (RequestDispatcher)以 / 開頭專案上下文根request.getRequestDispatcher("/BServlet")
不以 / 開頭當前 Servlet 路徑若當前 /servlet/AServlet → BServlet 解析為 /servlet/BServlet
3. 重定向 (response.sendRedirect)以 / 開頭主機根 (需手動加專案名)response.sendRedirect("/day10_1/Bservlet")
4. 頁面超鏈接/表單 (a href, form action)同重定向(客戶端路徑)主機根<a href="/day10_1/AServlet">
不以 / 開頭當前頁面目錄頁面 /html/form.html → AServlet 解析為 /html/AServlet
5. ServletContext.getResource()以 / 開頭Web 內容根 (index.jsp 所在目錄)context.getResource("/WEB-INF/config.xml")
6. ClassLoader.getResource()不以 / 開頭Classpath 根 (classes 目錄)clazz.getResource("config.properties")
以 / 開頭Classpath 根clazz.getResource("/config.properties")

核心區別速記

  • 伺服器端路徑(轉發、ServletContext):相對 專案上下文根,以 / 開頭
  • 客戶端路徑(重定向、超鏈接、表單):相對 主機根,需手動加 專案名
  • ClassLoader 路徑:相對 classes 目錄,不加項目名

最佳實踐建議

  1. 統一使用 以 / 開頭的絕對路徑,減少相對路徑歧義
  2. JSP/HTML 中引用資源:<c:url value="/path" /> 或 ${pageContext.request.contextPath}/path 自動補全專案名
  3. 配置檔讀取:優先 ClassLoader.getResourceAsStream() 讀取 classpath 下資源
  4. web.xml url-pattern 採用 /api/* 風格,RESTful 更清晰
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved