首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> JSP 程式設計 >> 關於JSP

JSTL標簽庫入門教程:核心標簽、EL表達式與腳本元素替代實戰

     編輯:關於JSP

JSP標準標簽庫(JSTL)封裝了Web開發中高頻的通用功能:迭代/條件判斷、數據格式化、XML操作、數據庫訪問、國際化等。它讓JSP作者擺脫<% %>Scriptlet的纏繞,實現「頁面無Java代碼」的潔淨分層。本文系統梳理JSTL 1.0四大標簽庫與EL表達式核心語法。

為什麼需要JSTL?

傳統Scriptlet實現條件內容:

<% if (user.getRole().equals("member")) { %>
  <p>Welcome, member!</p>
<% } else { %>
  <p>Welcome, guest!</p>
<% } %>

痛點:花括號匹配極易出錯、嵌套Scriptlet調試困難、設計師與程序員職責混淆、編譯錯誤信息難定位。JSTL以聲明式標簽解決所有問題。

JSTL 1.0 四大標簽庫

前綴URI功能領域核心標簽示例
chttps://java.sun.com/jsp/jstl/core流程控制、變量管理、URL操作<c:if> <c:choose/when/otherwise> <c:forEach> <c:set> <c:url>
fmthttps://java.sun.com/jsp/jstl/fmt數字/日期格式化、國際化(i18n)<fmt:formatNumber> <fmt:formatDate> <fmt:message> <fmt:setLocale>
xhttps://java.sun.com/jsp/jstl/xmlXML解析、XPath選擇、XSLT轉換<x:parse> <x:out> <x:forEach> <x:transform>
sqlhttps://java.sun.com/jsp/jstl/sql數據庫查詢/更新、事務控制<sql:query> <sql:update> <sql:transaction>

另含兩個驗證器:ScriptFreeTLV(禁用Scriptlet)、PermittedTaglibsTLV(限制可用標簽庫),在web.xml中配置<jsp-property-group>啟用。

表達式語言(EL)核心語法

EL格式:${expression},定界符${ }。支持:

  • 隱式對象:11個保留標識符(pageScope、requestScope、sessionScope、applicationScope、param、paramValues、header、headerValues、cookie、initParam、pageContext)。
  • 屬性訪問:${user.name}(點號)、${user['full-name']}(括號)、${list[0]}(索引)、${map.key}(Map鍵)。
  • 運算符:算術(+ - * / div mod)、邏輯(and or not)、關係(== eq != ne < lt > gt ≤ le ≥ ge)、empty(判空)、三元? :。
  • 字面量:字符串、數字、布爾、null。

EL實戰示例

<!-- 單純輸出 -->
<c:out value="${user.firstName}"/>

<!-- 字符串拼接 -->
<c:out value="Hello ${user.firstName} ${user.lastName}"/>

<!-- 條件判斷 -->
<c:choose>
  <c:when test="${user.role eq 'admin'}"><span class="badge">Admin</span></c:when>
  <c:when test="${user.role eq 'member'}">Member</c:when>
  <c:otherwise>Guest</c:otherwise>
</c:choose>

<!-- 迭代集合 -->
<c:forEach var="item" items="${cart.items}" varStatus="status">
  <tr class="${status.index % 2 == 0 ? 'even' : 'odd'}">
    <td>${item.name}</td><td>${item.price}</td>
  </tr>
</c:forEach>

<!-- 格式化貨幣 -->
<fmt:formatNumber value="${order.total}" type="currency" currencySymbol="¥"/>

最佳實踐建議

  1. 禁用Scriptlet:配置ScriptFreeTLV強制團隊使用JSTL/EL。
  2. 業務邏輯前置:Controller/Servlet預處理數據放入請求屬性,JSP僅渲染。
  3. EL不放複雜邏輯:超過三元運算符的邏輯移至Java端計算好再傳遞。
  4. 升級JSTL 1.2+:JSP 2.1+整合統一EL(javax.el),語法更強大(支持方法調用、Lambda等)。

JSTL+EL是JSP頁面「去代碼化」的基石,掌握它等於掌握了現代JSP開發的正確姿勢。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved