現象:Spring MVC 專案,JSP 頁面引入 CSS/JS 相對路徑,運行時 404,瀏覽器 Network 顯示請求路徑錯誤。
/user/list (Controller 映射),JSP 渲染 /WEB-INF/views/user/list.jsp。<link href="css/style.css"> → 瀏覽器請求 /user/css/style.css (相對 /user/) → 404。/resources/css/style.css 或 /static/css/style.css。JSP 中 (JSTL core):
<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>
<link rel="stylesheet" href="<c:url value='/resources/css/style.css'/>">
<script src="<c:url value='/resources/js/app.js'/>"></script>
<c:url value='/...'/> 自動添加上下文路徑 (/appname),生成正確絕對路徑。${pageContext.request.contextPath}/resources/... (EL 表達式)。Spring MVC 靜態資源映射配置 (關鍵):
<mvc:resources mapping="/resources/**" location="/resources/" />
<!-- 或 Spring Boot 默認 /static/**, /public/**, /resources/**, /META-INF/resources/** -->
/resources/** 請求映射到 classpath /resources/ 或 webapp/resources/ 目錄。/resources/css/...)。<mvc:resources> 映射路徑與 JSP 引用路徑是否一致。src/main/webapp/resources/ 或 src/main/resources/static/)。spring.mvc.static-path-pattern 和 spring.resources.static-locations 配置。**核心原則:JSP/HTML 中引用靜態資源永遠使用 <c:url> 或 ${contextPath} 生成絕對路徑,配合 <mvc:resources> 映射,徹底解決相對路徑 404 問題。**