JSP(JavaServer Pages)是 Sun 公司基於 Java 語言開發的動態網頁技術,它最大的特點在於將網頁的動態邏輯與靜態 HTML 內容分離。開發者可以使用熟悉的工具編寫 HTML,再以特殊標記(以 <% 開頭、%> 結尾)嵌入 Java 代碼片段,從而實現動態內容輸出。
JSP 檔案通常以 .jsp 為副檔名,部署在 Web 應用的任意目錄下。雖然 JSP 外觀像 HTML,但容器(如 Tomcat)在首次請求時會將其編譯為 Servlet 類:靜態 HTML 轉為 out.write() 輸出,動態標籤轉為對應的 Java 代碼。編譯完成後,後續請求直接執行已載入的 Servlet,無感知延遲。
<%= ... %>、Scriptlet <% ... %>、宣告 <%! ... %>。<%@ page ... %> 設定導入包、緩衝區、錯誤頁等;<%@ include ... %> 在編譯期靜態包含檔案。<jsp:include> 動態包含、<jsp:forward> 轉發、<jsp:useBean> 等 Bean 操作。在 Scripting Elements 中可直接使用 8 大隱含對象:request、response、out、session、application、config、pageContext、page,分別對應 Servlet API 的核心接口,無需額外宣告即可存取請求參數、輸出流、會話狀態等。
| 元素 | 語法 | 說明 |
|---|---|---|
| 表達式 | <%= expr %> | 計算並輸出結果 |
| Scriptlet | <% code %> | 插入 Service 方法代碼 |
| 宣告 | <%! code %> | 類成員變量/方法,不在 Service 方法內 |
| page 指令 | <%@ page attr="val" %> | 控制 Servlet 結構,屬性含 import、contentType、session、buffer、errorPage 等 |
| include 指令 | <%@ include file="url" %> | 編譯期靜態包含本地檔案 |
| 註解 | <%-- 註解 --%> | 僅存在於 JSP 源碼,編譯後不輸出 |
| include 動作 | <jsp:include page="..." flush="true"/> | 請求期動態包含,靈活但不允許設定 HTTP 頭 |
| forward 動作 | <jsp:forward page="..."/> | 請求轉發至另一資源 |
| plugin 動作 | <jsp:plugin ...> | 生成瀏覽器專用 OBJECT/EMBED 標籤以運行 Applet |
掌握以上基礎,即可開始編寫第一個 JSP 頁面。後續章節將深入各指令、動作及隱含對象的進階用法。