在 Java Web 專案 (Maven 結構) 中,靜態資源建議放置於:
src/main/webapp/
├── images/ # 存放圖片 (背景圖、Icon、Banner 等)
│ ├── bg.jpg
│ └── logo.png
├── css/
│ └── style.css
├── js/
└── WEB-INF/
部署後可透過 https://host:port/contextPath/images/bg.jpg 存取。
<body style="background-image: url('images/bg.jpg');
background-size: cover;
background-position: center;
background-repeat: no-repeat;">
<!-- 頁面內容 -->
</body>
body {
background-image: url('../images/bg.jpg');
background-size: cover;
background-position: center;
background-repeat: no-repeat;
background-attachment: fixed; /* 視差效果 */
}
<head>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>...</body>
.bg-home { background-image: url('../images/home-bg.jpg'); }
.bg-login { background-image: url('../images/login-bg.jpg'); }
.bg-dashboard { background-image: url('../images/dashboard-bg.jpg'); }
/* 共用背景樣式 */
.bg-common {
background-size: cover;
background-position: center;
background-repeat: no-repeat;
min-height: 100vh;
}
<body class="bg-home bg-common">...</body>
<img src="images/logo.png" alt="公司Logo" width="200" height="80">
<!-- 使用 pageContext.request.contextPath 確保路徑正確 -->
<img src="<%=request.getContextPath()%>/images/photo.jpg" alt="相片">
<!-- 或使用 JSTL core (需引入 taglib) -->
<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>
<img src="<c:url value='/images/photo.jpg'/>" alt="相片">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." alt="icon">
| 情境 | 錯誤路徑 | 正確路徑 | 說明 |
|---|---|---|---|
| JSP 在根目錄 | images/bg.jpg | images/bg.jpg | 相對路徑正確 |
JSP 在子目錄 /user/ | images/bg.jpg | ../images/bg.jpg | 需返回上層 |
| 使用絕對路徑 | /images/bg.jpg | <%=request.getContextPath()%>/images/bg.jpg | 需包含 ContextPath |
| CSS 中引用圖片 | url('images/bg.jpg') | url('../images/bg.jpg') | 相對 CSS 檔案位置 |
<script>
function preloadImages() {
var imgs = ['images/bg.jpg', 'images/banner1.jpg', 'images/banner2.jpg'];
imgs.forEach(function(src) {
var img = new Image();
img.src = src;
});
}
window.onload = preloadImages;
</script>
<picture>
<source media="(max-width: 480px)" srcset="images/bg-mobile.jpg">
<source media="(max-width: 768px)" srcset="images/bg-tablet.jpg">
<img src="images/bg-desktop.jpg" alt="背景">
</picture>
.hero-section {
background: linear-gradient(rgba(0,0,0,0.5), rgba(0,0,0,0.5)),
url('../images/bg.jpg');
background-size: cover;
color: white;
}
src/main/webapp/images/contextPath (專案非根部署時)webapp/images/,CSS 放在 webapp/css/background-image,內容圖用 <img>${pageContext.request.contextPath} 或 <c:url> 確保可攜性background-size: cover、background-position: center 處理各種螢幕尺寸