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

Java Web 相對路徑詳解:以斜線開頭與否的關鍵差異

     編輯:Java 綜合教學

Java Web 相對路徑核心概念

在 Java Web 開發中,相對路徑的寫法直接決定了資源請求的最終定位位置。簡單來說:以「/」開頭的路徑會從網站根目錄(域名+端口)開始解析;不以「/」開頭則從當前請求的目錄層級開始計算。這一區別在前端頁面引用靜態資源、後端請求轉發與重定向等場景中至關重要,稍有不慎就會導致 404 錯誤。

前端頁面靜態資源請求

假設專案部署路徑為 localhost:8080/resolvent/,且頁面未設定 <base href> 標籤。當訪問 index.jsp 或 Servlet 路徑 /servlet/dnf 時,路徑解析規則如下:

以「/」開頭(絕對路徑寫法)

根目錄鎖定為 localhost:8080(域名+端口)。例如:

<script src="/demo.js"></script>

無論當前頁面位於 /resolvent/ 或 /resolvent/servlet/,瀏覽器最終都會請求 localhost:8080/demo.js。

不以「/」開頭(相對路徑寫法)

基準目錄為當前頁面所在目錄:

  • 在 localhost:8080/resolvent/index.jsp 中引用 src="demo.js" → 請求 localhost:8080/resolvent/demo.js
  • 在 localhost:8080/resolvent/servlet/dnf 中引用 src="demo.js" → 請求 localhost:8080/resolvent/servlet/demo.js

最佳實踐:在 JSP 頁面頂部加入 <base href="<%=request.getScheme()%>://<%=request.getServerName()%>:<%=request.getServerPort()%><%=request.getContextPath()%>/>,統一基準路徑,避免層級混淆。

後端代碼:請求轉發與重定向

後端 request.getRequestDispatcher() 的路徑解析規則與前端不同:**以「/」開頭時,根目錄為當前 Web 應用的上下文路徑(即 localhost:8080/resolvent)**。

以「/」開頭

request.getRequestDispatcher("/login.jsp").forward(request, response);

無論當前 Servlet 路徑為 /servlet/dnf 或 /index.jsp,最終都會定位到 localhost:8080/resolvent/login.jsp。

不以「/」開頭

request.getRequestDispatcher("login.jsp").forward(request, response);

基準目錄為當前請求的 Servlet 路徑:

  • 從 /servlet/dnf 轉發 → 定位 localhost:8080/resolvent/servlet/login.jsp
  • 從 /index.jsp 轉發 → 定位 localhost:8080/resolvent/login.jsp

總結對照表

場景以「/」開頭不以「/」開頭
前端靜態資源域名+端口(網站根目錄)當前頁面目錄
後端轉發/重定向Web 應用上下文路徑當前請求 Servlet 目錄

掌握這一核心差異,能有效避免 Java Web 專案中常見的資源找不到、頁面跳轉錯誤等問題。

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