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

JSP 標準標籤庫(JSTL)完整指南

     編輯:JSP 入門

JSP 標準標籤庫(JSTL)完整指南

JSP 標準標籤庫(JSTL)是一套封裝了 JSP 應用程式通用核心功能的標籤集合。它提供了一種標準化、結構化的方式來處理迭代、條件判斷、XML 文件操作、國際化以及資料庫存取等常見任務,並支援整合自訂標籤的擴充框架。採用 JSTL 能顯著減少 JSP 頁面中的 Java 程式碼,提升程式碼可讀性與維護性。

JSTL 標籤分類

根據功能不同,JSTL 標籤可分為五大類別:

  • 核心標籤:提供流程控制、變數操作、URL 處理等基礎功能。
  • 格式化標籤:用於數字、日期、時間的格式化與解析,以及國際化訊息處理。
  • SQL 標籤:直接在 JSP 中執行資料庫查詢、更新與交易控制。
  • XML 標籤:支援 XML 文件的解析、轉換與 XPath 操作。
  • JSTL 函數:提供字串處理、長度計算、大小寫轉換等常用工具函數。

JSTL 庫安裝與配置

下載與部署

  1. 從 Apache 官方下載二進制套件:jakarta-taglibs-standard-current.zip。
  2. 解壓縮後,將 lib 目錄下的 standard.jar 與 jstl.jar 複製到專案的 /WEB-INF/lib/ 目錄。

web.xml 設定標籤庫描述檔(TLD)

在 web.xml 中宣告各標籤庫的 URI 與對應的 TLD 檔案位置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="https://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="https://java.sun.com/xml/ns/j2ee https://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <jsp-config>
    <taglib>
      <taglib-uri>https://java.sun.com/jstl/core</taglib-uri>
      <taglib-location>/WEB-INF/c.tld</taglib-location>
    </taglib>
    <taglib>
      <taglib-uri>https://java.sun.com/jstl/fmt</taglib-uri>
      <taglib-location>/WEB-INF/fmt.tld</taglib-location>
    </taglib>
    <taglib>
      <taglib-uri>https://java.sun.com/jstl/sql</taglib-uri>
      <taglib-location>/WEB-INF/sql.tld</taglib-location>
    </taglib>
    <taglib>
      <taglib-uri>https://java.sun.com/jstl/xml</taglib-uri>
      <taglib-location>/WEB-INF/x.tld</taglib-location>
    </taglib>
    <!-- 其餘 -rt 版本同理 -->
  </jsp-config>
</web-app>

在 JSP 頁面引入標籤庫

每個使用 JSTL 的 JSP 檔案頂部需加入 <%@ taglib %> 指令,例如核心標籤庫:

<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>

核心標籤詳細說明

標籤功能描述
<c:out>輸出資料至頁面,類似 <%= ... %>,但會自動跳脫 XML 特殊字元。
<c:set>設定變數值於指定範圍(page、request、session、application)。
<c:remove>移除指定範圍內的變數。
<c:catch>捕捉例外並選擇性儲存錯誤訊息。
<c:if>單一條件判斷。
<c:choose>、<c:when>、<c:otherwise>多條件分支結構,類似 switch-case。
<c:import>引入絕對或相對 URL 的內容,功能比 <%@ include %> 強大。
<c:forEach>通用迭代標籤,支援 Collection、Map、陣列、Iterator 等。
<c:forTokens>依指定分隔符切割字串並迭代。
<c:param>為 <c:import> 或 <c:redirect> 傳遞參數。
<c:redirect>導向至新 URL。
<c:url>建立可攜帶查詢參數的 URL,自動處理 Session ID 重寫。

格式化標籤

引入方式:<%@ taglib prefix="fmt" uri="https://java.sun.com/jsp/jstl/fmt" %>

標籤說明
<fmt:formatNumber>依指定格式或精度格式化數字、貨幣、百分比。
<fmt:parseNumber>解析字串為數字、貨幣或百分比。
<fmt:formatDate>依模式或風格格式化日期時間。
<fmt:parseDate>解析字串為日期時間物件。
<fmt:bundle> / <fmt:setBundle>綁定資源包(ResourceBundle)供國際化訊息使用。
<fmt:setLocale>指定當前頁面的 Locale。
<fmt:timeZone> / <fmt:setTimeZone>設定時區。
<fmt:message>輸出資源包中的國際化訊息。
<fmt:requestEncoding>設定 Request 的字元編碼。

SQL 標籤

引入方式:<%@ taglib prefix="sql" uri="https://java.sun.com/jsp/jstl/sql" %>

注意:實務上建議在 Service 層處理資料庫邏輯,JSP 僅負責顯示,避免業務邏輯與視圖耦合。

標籤說明
<sql:setDataSource>定義資料來源(DataSource 或 JDBC 參數)。
<sql:query>執行 SELECT 查詢,結果可存入變數。
<sql:update>執行 INSERT、UPDATE、DELETE 等更新操作。
<sql:param>為 SQL 參數設定值(防止 SQL 注入)。
<sql:dateParam>專門設定日期型別參數。
<sql:transaction>提供交易控制,確保多條 SQL 同成功同失敗。

XML 標籤

引入方式:<%@ taglib prefix="x" uri="https://java.sun.com/jsp/jstl/xml" %>

使用前需額外將 XercesImpl.jar 與 xalan.jar 放入 Tomcat lib 目錄。

標籤說明
<x:out>輸出 XPath 運算式結果,自動跳脫 XML 字元。
<x:parse>解析 XML 文件或字串,建立 Document 物件。
<x:set>將 XPath 運算式結果存入變數。
<x:if>、<x:choose>、<x:when>、<x:otherwise>針對 XPath 運算式進行條件判斷。
<x:forEach>迭代 XML 節點集合。
<x:transform>套用 XSLT 樣式表轉換 XML。
<x:param>為 XSLT 轉換傳遞參數。

JSTL 函數庫

引入方式:<%@ taglib prefix="fn" uri="https://java.sun.com/jsp/jstl/functions" %>

常用函數舉例:

  • fn:contains(str, substr):判斷字串是否包含子字串。
  • fn:split(str, delimiter):依分隔符切割字串為陣列。
  • fn:join(arr, separator):將陣列元素合併為字串。
  • fn:replace(str, before, after):字串替換。
  • fn:escapeXml(str):跳脫 XML 特殊字元。
  • fn:toUpperCase(str) / fn:toLowerCase(str):大小寫轉換。
  • fn:trim(str):移除首尾空白。

最佳實踐建議

  1. 優先使用 EL 運算式搭配 JSTL,避免在 JSP 中撰寫 Java Scriptlet。
  2. 核心標籤最常用,熟練掌握 <c:forEach>、<c:if>、<c:set> 等。
  3. SQL 標籤僅供原型開發,正式專案應移至 DAO/Service 層。
  4. 國際化專案善用格式化標籤與資源包機制。
  5. 升級建議:現代 Spring MVC 專案常搭配 Thymeleaf 或 FreeMarker,JSTL 仍可作為相容層使用。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved