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

Servlet 中 RequestDispatcher 路徑解析:相對於 Web 應用根目錄

     編輯:程式設計綜合問答

路徑規則

request.getRequestDispatcher(path) 的 path:

  • 以 / 開頭:相對於 Web 應用根目錄(Context Root)。
  • 不以 / 開頭:相對於 當前請求的路徑(即瀏覽器地址列的目錄層級)。

實例說明

假設部署路徑 /myapp,Servlet 映射 /servlet/myservlet,當前請求 https://host/myapp/servlet/myservlet:

程式碼解析後的絕對路徑說明
request.getRequestDispatcher("/userinfo.jsp")/myapp/userinfo.jsp推薦:絕對路徑,不受 Servlet 映射影響
request.getRequestDispatcher("userinfo.jsp")/myapp/servlet/userinfo.jsp相對於 /servlet/ 目錄
request.getRequestDispatcher("../userinfo.jsp")/myapp/userinfo.jsp相對路徑向上一層,同絕對路徑

最佳實踐

  1. 永遠使用以 / 開頭的絕對路徑,如 /WEB-INF/views/userinfo.jsp 或 /userinfo.jsp。
  2. 將視圖檔案置於 /WEB-INF/views/ 避免直接外部訪問。
  3. 使用 request.getContextPath() 拼接時也要加 /:request.getContextPath() + "/userinfo.jsp"。

如此可避免因 Servlet 映射層級不同導致的路徑錯誤。

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