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

Web 專案相對路徑與絕對路徑徹底講解

     編輯:程式設計綜合問答

核心概念速查表

路徑寫法含義基準點適用場景
`./` 或 無前綴當前目錄當前資源所在目錄同級資源引用
`../`上一級目錄當前資源所在目錄引用父目錄資源
`/resource`Web 應用根目錄 (Context Root)部署後的 Web 應用根目錄**伺服器端轉發、重定向、JSP 引用**
`https://host/resource`絕對 URL瀏覽器地址欄跨域、外部資源、AJAX 請求

常見困惑逐一解答

1. CSS 中 `./` 是什麼?

CSS 檔案中的相對路徑**基準是 CSS 檔案本身所在目錄**,而非引用該 CSS 的 HTML 頁面。
例:`style.css` 在 `/css/`,裡寫 `background: url(./img/bg.png)` → 實際請求 `/css/img/bg.png`。

2. `/haha.txt` 在 WebRoot 還是 src?

**在 WebRoot (或 WebContent) 根目錄**。
部署後對應 `https://host:port/ContextRoot/haha.txt`。
`src` 目錄下的資源為 Java 原始碼/配置檔,**編譯後進入 `WEB-INF/classes`,不可直接以 `/` 路徑訪問**。

3. `/Test/haha.txt` 在哪?

同理,在 **WebRoot/Test/haha.txt**。`Test` 是 WebRoot 下的子目錄。

4. 同目錄下 `a.jsp` 表單提交 `b.jsp` 可行,但 `` 失效?

表單提交:瀏覽器根據**當前頁面 URL** 解析相對路徑。若 `a.jsp` URL 為 `/app/a.jsp`,提交 `b.jsp` → `/app/b.jsp`。
超連結:若 `
` 在 `a.jsp` 中,**同樣基於當前頁面 URL 解析**,理應同樣有效。
**失效常見原因**:

最佳實踐建議

  1. JSP/伺服器端:統一使用 **以 `/` 開頭的絕對路徑(相對 Context Root)**,如 `` 或 `
    `,消除相對路徑歧義。
  2. CSS/JS/圖片:使用相對路徑(基於自身檔案位置),或配合 `` 標籤統一管理。
  3. AJAX/前端框架:統一攔截器注入 `basePath` 變數,或使用絕對 URL `/api/...`。

總結

路徑問題 90% 源於**基準點混淆**。牢記:伺服器端用 `/` 開頭的 Context Root 絕對路徑;客戶端資源用相對於自身的相對路徑,即可避開絕大多數坑。

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