| 屬性 | 說明 | 範例 |
| import | 匯入類別/套件,可多次使用 | <%@ page import="java.util.*,java.sql.*" %> |
| contentType | 設定回應 MIME 型別與 charset | <%@ page contentType="text/html;charset=UTF-8" %> |
| pageEncoding | 指定 JSP 檔案儲存編碼 | <%@ page pageEncoding="UTF-8" %> |
| isThreadSafe | true (預設) 多執行緒共用實例;false 實作 SingleThreadModel | <%@ page isThreadSafe="false" %> |
| session | true (預設) 自動建立/綁定 session;false 禁用 | <%@ page session="false" %> |
| buffer | out 緩衝區大小,預設 8kb 以上 | <%@ page buffer="16kb" %> |
| autoFlush | 緩衝區滿時自動 flush (true) 或拋出異常 (false) | <%@ page autoFlush="true" %> |
| errorPage | 指定錯誤處理頁面 | <%@ page errorPage="/error.jsp" %> |
| isErrorPage | 宣告此頁為錯誤頁面,可用 exception 內建物件 | <%@ page isErrorPage="true" %> |
| extends | 指定 Servlet 父類別 (慎用,容器可能已有自定父類) | <%@ page extends="com.my.BaseServlet" %> |
2. include 指令
<%@ include file="relative/url" %>
- **翻譯階段**靜態包含,包含檔可包含 JSP 程式碼。
- 適合不常變動的頁首/頁尾/導航列,效能最佳。
- 若包含檔頻繁變動,改用
<jsp:include page="..." flush="true"/> 動作 (請求階段動態包含)。
三、JSP 八大預定義變數 (內建物件)
| 變數 | 型別 | 說明 |
| request | HttpServletRequest | 請求參數、Header、Cookie、Session 等 |
| response | HttpServletResponse | 設定狀態碼、Header、Cookie、重導向 |
| out | JspWriter (PrintWriter 緩衝版) | 輸出內容,可透過 page 指令 buffer 屬性調整 |
| session | HttpSession | 用戶會話屬性,若 page 指令 session="false" 則不可用 |
| application | ServletContext | 全應用共享資源,可透過 getServletConfig().getContext() 取得 |
| config | ServletConfig | 當前 Servlet 初始化參數 |
| pageContext | PageContext | 管理頁面屬性範圍 (page/request/session/application)、轉向、包含等 |
| page | Object (this) | 當前 Servlet 實例,為非 Java 腳本語言預留 |
四、綜合範例
<%@ page import="java.util.*" %>
<HTML><BODY>
<h2>JSP 功能示範</h2>
<ul>
<li><b>表達式</b>: 你的主機 <%= request.getRemoteHost() %></li>
<li><b>Scriptlet</b>: <% out.println("查詢字串: " + request.getQueryString()); %></li>
<li><b>宣告+表達式</b>: <%! private int count=0; %> 訪問次數: <%= ++count %></li>
<li><b>指令+表達式</b>: 當前日期: <%= new Date() %></li>
</ul>
</BODY></HTML>
- 上一篇文章: 資料庫連線資源優化:解決頻繁刷新導致連線耗盡問題
- 下一篇文章: JSP/Servlet 處理表單資料完整指南:GET/POST 統一讀取、多值參數、檔案上傳
Copyright ©
程式碼之家 All Rights Reserved