JFinal 項目中,頁面引用的 CSS、JS、圖片等靜態資源返回 404,常見於部署路徑非根目錄(如 /myapp)時。
JFinal 默認不自動處理上下文路徑,導致頁面中相對路徑解析錯誤。若 Tomcat 配置 path="" 強制部署到根目錄雖可暫時繞過,但違反規範,且多應用部署時衝突。
@Override
public void configHandler(Handlers handlers) {
handlers.add(new ContextPathHandler());
}
ContextPathHandler 會自動將 ${CONTEXT_PATH} 變量注入模板引擎,值為應用上下文路徑(如 /myapp)。
<head>
<base href="${CONTEXT_PATH}/">
<link rel="stylesheet" href="css/style.css">
<script src="js/main.js"></script>
</head>
<base href="${CONTEXT_PATH}/"> 設置頁面基準路徑,所有相對鏈接自動拼接上下文路徑。css/style.css),不再硬編碼上下文路徑。path=""(根部署)與 path="/myapp"(子路徑部署)雙模式,無需修改引用地址。CONTEXT_PATH 變量。proxy_set_header Host 及 location 路徑轉發。configConstant 中的 devMode 為 false 以啟用緩存。