| 元素 | 語法 | 用途 | 生成位置 |
|---|---|---|---|
| 指令 | <%@ directive ... %> | 頁面級配置:編碼、導入、錯誤頁、標籤庫、緩存等 | 類級別 / 頁面屬性 |
| 聲明 | <%! declaration %> | 定義類成員:字段、方法、內部類 | Servlet 類成員區域 |
| 表達式 | <%= expression %> | 輸出值到響應流 (自動 toString()) | out.print() 調用內 |
| 腳本片段 | <% scriptlet %> | 任意 Java 語句:流程控制、業務邏輯、變量定義 | _jspService() 方法體內 |
| 註釋 | <%-- comment --%> | 服務端註釋,**不輸出到客戶端** | 編譯時剔除 |
<%@ page
language="java"
contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"
import="java.util.*,java.sql.*"
session="true"
buffer="8kb"
autoFlush="true"
errorPage="error.jsp"
isErrorPage="false"
extends="com.base.BaseJsp"
info="Author: Zhang"
isThreadSafe="true"
deferredSyntaxAllowedAsLiteral="false"
trimDirectiveWhitespaces="false"
%>
關鍵屬性:contentType/pageEncoding 解決亂碼;import 減少完整類名;errorPage/isErrorPage 異常處理;session="false" 禁用 Session 節省資源。
<%@ include file="header.jsp" %>
<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>
引入標籤庫,prefix 為標籤前綴,uri 為 TLD 定義的 URI 或標準庫 URI。
<%!
private int counter = 0; // 實例變量,線程不安全!
public void initData() { ... } // 成員方法
%>
禁用於可變狀態,僅用於定義輔助方法、常量、靜態工具類引用。
<% for (int i = 1; i <= 4; i++) { %>
<h<%= i %>>Hello</h<%= i %>>
<% } %>
<!-- 輸出 h1~h4 標題 -->
| 類型 | 語法 | 客戶端可見 | 用途 |
|---|---|---|---|
| JSP 註釋 | <%-- 服務端邏輯 --%> | 否 | 隱藏業務邏輯、調試代碼、TODO |
| HTML 註釋 | <!-- 客戶端提示 --> | 是 (查看源碼) | 前端開發說明、條件註釋 IE Hack |
| Java 註釋 | <% // 單行 %> / <%/* 多行 */%> | 否 | 腳本片段/聲明內部代碼註釋 |