JSTL (JSP Standard Tag Library) 封裝了 Web 開發中最常見的流程控制、資料格式化、資料庫存取、國際化等功能,以標籤形式取代 JSP 頁面中的 Java Scriptlet,實現「頁面設計師與程式開發者分工協作」,大幅提升可讀性與維護性。
jstl.jar、standard.jar(放入 WEB-INF/lib)。<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="https://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="sql" uri="https://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="fn" uri="https://java.sun.com/jsp/jstl/functions" %>
c: 前綴)| 標籤 | 用途 | 關鍵屬性 |
|---|---|---|
<c:set> | 設定範圍變數或 Bean 屬性 | var, value, scope, target, property |
<c:remove> | 移除範圍變數 | var, scope |
<c:catch> | 捕獲例外並存入變數 | var (存放 Throwable) |
<c:out> | 輸出值(自動 HTML 轉義,防 XSS) | value, default, escapeXml |
<% int i = 1/0; %>
歡迎首次造訪!
優秀
及格
不及格
<c:forEach>
${status.index + 1}. ${user.name} - ${user.email}
${i}
[${token}]
搜尋
sql: 前綴)注意:生產環境建議在 Service 層處理資料庫邏輯,JSP 僅做展示。此處僅供原型開發參考。
SELECT id, name, email FROM users WHERE status = ?
${u.id} - ${u.name} - ${u.email}
CALL update_user_status(?, ?)
fmt: 前綴)
輸出: 1,234.50
輸出: 12%
| 物件 | 對應 | 範例 |
|---|---|---|
${param.name} | request.getParameter("name") | 單一參數 |
${paramValues.name} | request.getParameterValues("name") | 陣列參數 |
${header['user-agent']} | 請求 Header | |
${cookie.jsessionid.value} | Cookie 值 | |
${sessionScope.user} | Session 屬性 | |
${applicationScope.counter} | Application 屬性 |
<jsp-config><scripting-invalid>true</scripting-invalid></jsp-config> 強制使用 JSTL/EL。<c:forEach>、<c:out> 展示。<c:out escapeXml="true"> 開啟,切勿關閉除非極度確信內容安全。<fmt:bundle>、<fmt:message> 實現多語系。