JSP 頁面同時使用 `<%@ include file="static.html" %>` 靜態包含與 `
<jsp:param name="a1" value="<%=request.getParameter("name") %>"/>
外層 `value="..."` 使用雙引號,內層 `request.getParameter("name")` 也使用雙引號,導致 JSP 編譯器無法正確解析屬性邊界。
<jsp:param name="a1" value="<%=request.getParameter('name') %>"/>
<jsp:param name="a2" value="<%=request.getParameter('password') %>"/>
JSP 屬性值允許單引號包裹,避免與外層雙引號衝突。
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ include file="static.html" %>
<a href="action.jsp">goto two —></a><br>
<jsp:include page="action.jsp" flush="true">
<jsp:param name="a1" value="<%=request.getParameter('name') %>"/>
<jsp:param name="a2" value="<%=request.getParameter('password') %>"/>
</jsp:include>
| 特性 | <%@ include %> 靜態 | 動態 |
|---|---|---|
| 處理階段 | 編譯期(翻譯成 Servlet 時合併) | 執行期(請求轉發) |
| 參數傳遞 | 不支援 | 支援 ` |
| 目標資源變更 | 需重新編譯主頁面 | 即時生效 |
| 適用場景 | 頁首/頁尾、版權聲明等靜態片段 | 需帶參數、動態生成的片段 |
JSP 包含機制中最常見的坑是**引號嵌套**。記住:「外層雙引號,內層單引號」即可避開 90% 的編譯/執行錯誤。