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

JSP include 指令 file 屬性路徑解析規則詳解

     編輯:程式設計綜合問答

指令語法

<%@ include file="relative/path.jsp" %>

路徑解析規則

路徑形式解析基準示例
以 / 開頭Web 應用根目錄 (Context Root)/common/header.jsp → $WEBAPP_ROOT/common/header.jsp
不以 / 開頭當前 JSP 文件所在目錄../fragment/nav.jsp → 相對當前目錄向上一層

關鍵區別:include 指令 vs include 動作

特性<%@ include %> (指令)<jsp:include> (動作)
處理階段編譯期(合併源碼再編譯)運行期(獨立編譯,運行時合併輸出)
路徑解析相對當前 JSP 文件相對 Context Root(同 request.getRequestDispatcher)
參數傳遞不支援支援 <jsp:param>
修改生效需重新編譯主頁面即時生效
適用場景靜態片段(header/footer)動態內容、條件包含

常見錯誤與修正

  • 誤以為 / 代表文件系統根目錄:在 Web 容器中永遠是 Context Root。
  • 跨模組引用失敗:不同 Web 模組無法直接 include,需打包為 JAR 放入 WEB-INF/lib 或使用 HTTP 包含(<c:import>)。
  • file 屬性不可用 EL 表達式(${path}),需改用 <jsp:include page="${path}">。

最佳實踐

<%-- 靜態佈局片段,編譯期包含 --%>
<%@ include file="/WEB-INF/views/layout/header.jsp" %>

<%-- 動態內容區塊,運行期包含 --%>
<jsp:include page="/dynamic/sidebar">
    <jsp:param name="userId" value="${param.userId}" />
</jsp:include>

總結

<%@ include file="/xxx" %> 以 / 開頭 = 相對 Web 應用根;無 / = 相對當前 JSP 目錄。切記區分編譯期指令與運行期動作,選錯會導致路徑 404 或參數無法傳遞。

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