在 JSP 頁面引用 CSS 設定背景圖片,CSS 檔案中按 Ctrl+點擊可預覽圖片,但瀏覽器開發者工具顯示圖片 404 或載入失敗。
當 JSP 與 CSS 位於不同目錄層級時,同一個相對路徑指向的實際資源位置不同,導致圖片找不到。
在 CSS 中以網站根目錄開頭:
.hero { background-image: url('/images/bg.jpg'); }
前綴 / 代表部署後的 Context Path 根目錄,不受 CSS/JSP 位置影響。
<style>
.hero { background-image: url('<%=request.getContextPath()%>/images/bg.jpg'); }
</style>
或在 JSP 頁面定義基底變數:
<c:set var="ctx" value="${pageContext.request.contextPath}" />
<link rel="stylesheet" href="${ctx}/css/style.css">
images 資料夾webapp/
├─ css/style.css
├─ images/bg.jpg
└─ jsp/page.jsp
CSS 寫法:background-image: url('../images/bg.jpg');(相對 CSS 檔案位置)
| 錯誤寫法 | 問題 | 修正 |
|---|---|---|
url('images/bg.jpg') | 相對 JSP URL,部署後路徑錯誤 | 改為 url('/images/bg.jpg') 或動態輸出 Context Path |
url('../../images/bg.jpg') | 層級計算錯誤,維護困難 | 統一使用絕對路徑 |
圖片放在 WEB-INF 下 | 外部無法直接存取 | 移至 webapp/resources 或 static 公開目錄 |
JSP 引用 CSS 背景圖片失敗 90% 是路徑基準不一致。**統一使用以 Context Path 為起點的絕對路徑**,配合瀏覽器 Network 面板快速定位,即可徹底解決。