JSP標準標籤庫(JSTL)個人使用指南
前排提示,本篇僅涉及 JSTL 的配置和簡要介紹 JSTL 的 Core 和 Functions 標籤庫中幾個常用的標籤。更加詳細的內容,博主會貼相應超連結。
注意:本教程使用的 JSTL 1.2,如果你使用的是 JSTL 1.1 或之前的版本,需要匯入 jstl.jar 和 standard.jar 兩個包。可點選 http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/ 連結下載 JSTL 1.1 及之前的版本。
JSTL 規範由 Sun 公司制定,由 Apache 的 Jakarta 小組負責實現。JSTL 由 5 個不同功能的標籤庫組成,包括 Core、I18N、XML、SQL 以及 Functions;
配置 JSTL
注意:JSTL 現在已經是 Java EE5 的一個組成部分,如果採用支援 Java EE5 或以上版本的整合開發環境開發 Web 應用程式,就不需要再配置 JSTL 了。
JSTL的下載
使用 JSTL 需要引入 JSTL 的 JAR 包和標籤庫描述符檔案(副檔名為 .tld),標籤庫描述符檔案內包含標籤庫中所有標籤的定義、標籤名、功能類及各種屬性。
- JATL JAR 包官方下載網址:https://tomcat.apache.org/taglibs/standard/
下載完畢以後可以根據使用的軟體進行配置。
Eclipse 平臺
如果你再用的是 Eclipse 平臺,則需要配置 JSTL。配置 JSTL 的步驟如下:
1)複製 JSTL 的標準實現
在 Tomcat 的 \webapps\examples\WEB-INF\lib
目錄下找到 taglibs-standard-impl-1.2.5.jar
和 taglibs-standard-spec-1.2.5.ja r
檔案,然後複製到 Web 工程的 WEB-INF\lib
目錄下。
2)使用 taglib 標記定義字首與 uri 引用
如果使用 Core 標籤庫,首先需要在 JSP 頁面中使用 taglib 標記定義字首與 uri 引用,程式碼如下:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
如果使用 Functions 標籤庫,首先需要在 JSP 頁面中使用 taglib 標記定義字首與 uri 引用,程式碼如下:
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
IDEA 平臺
1)複製 JSTL 的標準實現
在 Tomcat 的 \webapps\examples\WEB-INF\lib
目錄下找到 taglibs-standard-impl-1.2.5.jar
和 taglibs-standard-spec-1.2.5.ja r
檔案,然後複製到 Web 工程的 WEB-INF\lib
目錄下。
2) 拷貝 tlb 檔案
把壓縮包解壓後得將 tld 下的需要引入的 tld 檔案複製到 WEB-INF 目錄下。
接下來我們在 web.xml
檔案中新增以下配置:可以根據需求增刪
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<jsp-config>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/fmt</taglib-uri>
<taglib-location>/WEB-INF/fmt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/fmt-rt</taglib-uri>
<taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/core-rt</taglib-uri>
<taglib-location>/WEB-INF/c-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/sql</taglib-uri>
<taglib-location>/WEB-INF/sql.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/sql-rt</taglib-uri>
<taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/x</taglib-uri>
<taglib-location>/WEB-INF/x.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/x-rt</taglib-uri>
<taglib-location>/WEB-INF/x-rt.tld</taglib-location>
</taglib>
</jsp-config>
</web-app>
使用任何庫,你必須在每個 JSP 檔案中的頭部包含<taglib> 標籤。
核心標籤
JSTL 核心(core)標籤是最常用的 JSTL 標籤,匯入核心標籤庫的語法如下:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
標籤 | 說明 |
---|---|
<c:out> | 將表示式的結果輸出到頁面中,類似於 <%= ...%> |
<c:set> | 在指定範圍內設定變數或屬性值 |
<c:if> | 類似於 Java if 語句,用於條件判斷 |
<c:choose> | 類似於 Java switch 關鍵字,為 <c:when>和<c:otherwise> 的父標籤 |
<c:when> | <c:choose> 的子標籤,用來判斷條件是否成立 |
<c:otherwise> | <c:choose> 的子標籤,當所有的 <c:when> 標籤判斷為 false 時被執行 |
<c:forEach> | 類似於 Java for,用於迭代集合中的資訊 |
<c:forTokens> | 類似於 Java split,用於分隔字串 |
<c:remove> | 用於刪除資料 |
<c:catch> | 用於捕獲異常 |
<c:import> | 用來匯入靜態或動態檔案 |
<c:param> | 用來傳入引數 |
<c:redirect> | 用於將當前頁面重定向至另一個 URL |
<c:url> | 用於將 URL 格式化為一個字串 |
格式化標籤
JSTL 格式化(fmt)標籤可以通過很簡單的方式轉換數字、日期,匯入格式化標籤庫的語法如下。
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
標籤 | 說明 |
---|---|
<fmt:requestEncoding> | 設定請求資料的字元編碼 |
<fmt:setLocale> | 用於設定使用者本地化環境 |
<fmt:bundle> | 繫結資源 |
<fmt:message> | 用來從指定的資原始檔中呼叫資訊 |
<fmt:setBundle> | 繫結資源 |
<fmt:formatNumber> | 用於格式化數字、百分比和貨幣 |
<fmt:parseNumber> | 用於解析數字、貨幣和百分比 |
<fmt:formatDate> | 用於使用不同的方式格式化日期 |
<fmt:parseDate> | 用於把字串型別的日期轉換成日期資料型別 |
<fmt:timeZone> | 用於指定時區 |
<fmt:setTimeZone> | 用於設定預設時區 |
SQL標籤
JSTL SQL 標籤提供了許多操作資料庫(MySQL、Oracle、SQL Server 等)的標籤。雖然在大型的網站中不建議使用這種標籤庫,但在小型網站中經常會用到。匯入 SQL 標籤庫的語法如下。
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
標籤 | 說明 |
---|---|
<sql:setDataSource> | 用來在 JSP 頁面中配置資料來源 |
<sql:query> | 查詢資料庫中的資料 |
<sql:update> | 更新資料庫中的資料 |
<sql:dateParam> | 提供日期和時間的動態值 |
<sql:transaction> | 事務管理 |
<sql:param> | 設定 SQL 語句中的動態值 |
函式標籤
JSTL 函式(fn)標籤大部分是通用的字串處理函式,匯入函式標籤庫的語法如下:
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
標籤 | 說明 |
---|---|
fn:contains() | 用於判斷一個字串是否包含指定的字串,區分大小寫 |
fn:containsIgnoreCase() | 用於判斷一個字串是否包含指定的字串,不區分大小寫 |
fn:endsWith() | 用於判斷一個字串是否以指定的字尾結尾 |
fn:escapeXml() | 用於轉義 HTML/XML 中的字元 |
fn:indexOf() | 用於返回字串在指定字串中的開始位置 |
fn:join() | 用來將陣列中的所有元素利用指定的分隔符來連線成一個字串 |
fn:length() | 用於返回指定字串的長度 |
fn:split() | 用於將字串用指定的分隔符分隔為一個子串陣列 |
fn:startsWith() | 用於判斷一個字串是否以指定的字首開頭 |
fn:substring() | 用來返回指定字串的子字串 |
fn:substringAfter() | 用來返回字串中指定子字串後面的部分 |
fn:substringBefore() | 用來返回字串中指定子字串前面的部分 |
fn:toLowerCase() | 用來將指定字串中的所有字元轉為小寫 |
fn:toUpperCase() | 將指定字串中的所有字元轉為大寫 |
fn:trim() | 用來刪除指定字串兩端的空格 |
The desire of his soul is the prophecy of his fate
你靈魂的慾望,是你命運的先知。