EL (Expression Language) 主要用於查找作用域數據並執行簡單操作,非編程語言,通常配合 JSTL 使用,實現 JSP 無 Java 代碼腳本。
${expression}
例:${loginInfoBean.suser}、Hello ${loginInfoBean.suser}
| 對象 | 說明 |
|---|---|
| pageContext | 當前頁面 PageContext 實例 |
| pageScope / requestScope / sessionScope / applicationScope | 各作用域屬性 Map |
| param / paramValues | 請求參數(單值/多值) |
| header / headerValues | 請求頭(單值/多值) |
| cookie | Cookie Map |
| initParam | 上下文初始化參數 |
. 訪問屬性:${userBean.suser}[] 訪問 Map/集合:${userBean["suser"]}、${mcType["id"]}+ - * / div % mod== eq != ne < lt > gt <= le >= ge&& and || or ! notempty(判斷 null、空集合、空字符串)數字、字符串(單/雙引號)、布爾值 true/false、null
JSTL (JSP Standard Tag Library) 由 Apache 維護,包含 core、format、xml、sql 四大標簽庫,旨在替代 JSP 腳本元素,降低維護成本,明確分工。
jstl.jar、standard.jar 到 WEB-INF/lib.tld 文件到 WEB-INF<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>| 功能 | 標簽 | 關鍵屬性 |
|---|---|---|
| 輸出變量 | <c:out> | value, default, escapeXml |
| 設置變量 | <c:set> | value, var, scope |
| 移除變量 | <c:remove> | var, scope |
| 單分支判斷 | <c:if> | test, var, scope |
| 多分支判斷 | <c:choose> <c:when> <c:otherwise> | test |
| URL 處理 | <c:url> <c:param> <c:redirect> | value, context, name, value |
| 頁面包含 | <c:import> | url, context, charEncoding |
| 簡單循環 | <c:forEach> | var, begin, end, step |
| 集合迭代 | <c:forEach> | items, var, varStatus |
current, index, count, first, last, begin, end, step
<fmt:formatDate>:格式化日期,type 可為 short/medium/long/full,或自定義 pattern="yyyy-MM-dd"<fmt:formatNumber>:格式化數字,pattern="###.##"<c:forEach var="i" begin="1" end="100" step="1">
${i} <br>
</c:forEach>
<c:forEach var="mcBean" items="${mcList}" varStatus="mcStatus">
索引: ${mcStatus.index} ; 名稱: ${mcBean.sname} <br>
</c:forEach>
<jsp:useBean id="curDate" class="java.util.Date" scope="page"/>
<fmt:formatDate value="${curDate}" pattern="yyyy-MM-dd HH:mm:ss"/><br>
<fmt:formatNumber value="10.32898432" pattern="#.##"/><br>
理解 JSTL 與 EL 的協作關係,是編寫乾淨、可維護 JSP 頁面的關鍵。