# JSP 標準標簽庫(JSTL)
JSP標準標簽庫(JSTL)是一個JSP標簽集合,它封裝了JSP應用的通用核心功能。
JSTL支持通用的、結構化的任務,比如迭代,條件判斷,XML文檔操作,國際化標簽,SQL標簽。 除了這些,它還提供了一個框架來使用集成JSTL的自定義標簽。
根據JSTL標簽所提供的功能,可以將其分為5個類別。
* **核心標簽**
* **格式化標簽**
* **SQL 標簽**
* **XML 標簽**
* **JSTL 函數**
## JSTL 庫安裝
Apache Tomcat安裝JSTL 庫步驟如下:
* 從Apache的標準標簽庫中下載的二進包(jakarta-taglibs-standard-current.zip)。下載地址:[http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/](//archive.apache.org/dist/jakarta/taglibs/standard/binaries/)
* 下載jakarta-taglibs-standard-1.1.1.zip 包并解壓,將jakarta-taglibs-standard-1.1.1/lib/下的兩個jar文件:standard.jar和jstl.jar文件拷貝到/WEB-INF/lib/下。
使用任何庫,你必須在每個JSP文件中的頭部包含<taglib>標簽。
## 核心標簽
核心標簽是最常用的JSTL標簽。引用核心標簽庫的語法如下:
```
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" %>
```
| 標簽 | 描述 |
| --- | --- |
| [<c:out>](jstl-core-out-tag.html) | 用于在JSP中顯示數據,就像<%= ... > |
| [<c:set>](jstl-core-set-tag.html) | 用于保存數據 |
| [<c:remove>](jstl-core-remove-tag.html) | 用于刪除數據 |
| [<c:catch>](jstl-core-catch-tag.html) | 用來處理產生錯誤的異常狀況,并且將錯誤信息儲存起來 |
| [<c:if>](jstl-core-if-tag.html) | 與我們在一般程序中用的if一樣 |
| [<c:choose>](jstl-core-choose-tag.html) | 本身只當做<c:when>和<c:otherwise>的父標簽 |
| [<c:when>](jstl-core-choose-tag.html) | <c:choose>的子標簽,用來判斷條件是否成立 |
| [<c:otherwise>](jstl-core-choose-tag.html) | <c:choose>的子標簽,接在<c:when>標簽后,當<c:when>標簽判斷為false時被執行 |
| [<c:import>](jstl-core-import-tag.html) | 檢索一個絕對或相對 URL,然后將其內容暴露給頁面 |
| [<c:forEach>](jstl-core-foreach-tag.html) | 基礎迭代標簽,接受多種集合類型 |
| [<c:forTokens>](jstl-core-foreach-tag.html) | 根據指定的分隔符來分隔內容并迭代輸出 |
| [<c:param>](jstl-core-param-tag.html) | 用來給包含或重定向的頁面傳遞參數 |
| [<c:redirect>](jstl-core-redirect-tag.html) | 重定向至一個新的URL. |
| [<c:url>](jstl-core-url-tag.html) | 使用可選的查詢參數來創造一個URL |
## 格式化標簽
JSTL格式化標簽用來格式化并輸出文本、日期、時間、數字。引用格式化標簽庫的語法如下:
```
<%@ taglib prefix="fmt"
uri="http://java.sun.com/jsp/jstl/fmt" %>
```
| 標簽 | 描述 |
| --- | --- |
| [<fmt:formatNumber>](jstl-format-formatnumber-tag.html) | 使用指定的格式或精度格式化數字 |
| [<fmt:parseNumber>](jstl-format-parsenumber-tag.html) | 解析一個代表著數字,貨幣或百分比的字符串 |
| [<fmt:formatDate>](jstl-format-formatdate-tag.html) | 使用指定的風格或模式格式化日期和時間 |
| [<fmt:parseDate>](jstl-format-parsedate-tag.html) | 解析一個代表著日期或時間的字符串 |
| [<fmt:bundle>](jstl-format-bundle-tag.html) | 綁定資源 |
| [<fmt:setLocale>](jstl-format-setlocale-tag.html) | 指定地區 |
| [<fmt:setBundle>](jstl-format-setbundle-tag.html) | 綁定資源 |
| [<fmt:timeZone>](jstl-format-timezone-tag.html) | 指定時區 |
| [<fmt:setTimeZone>](jstl-format-settimezone-tag.html) | 指定時區 |
| [<fmt:message>](jstl-format-message-tag.html) | 顯示資源配置文件信息 |
| [<fmt:requestEncoding>](jstl-format-requestencoding-tag.html) | 設置request的字符編碼 |
## SQL標簽
JSTL SQL標簽庫提供了與關系型數據庫(Oracle,MySQL,SQL Server等等)進行交互的標簽。引用SQL標簽庫的語法如下:
```
<%@ taglib prefix="sql"
uri="http://java.sun.com/jsp/jstl/sql" %>
```
| 標簽 | 描述 |
| --- | --- |
| [<sql:setDataSource>](jstl-sql-setdatasource-tag.html) | 指定數據源 |
| [<sql:query>](jstl-sql-query-tag.html) | 運行SQL查詢語句 |
| [<sql:update>](jstl-sql-update-tag.html) | 運行SQL更新語句 |
| [<sql:param>](jstl-sql-param-tag.html) | 將SQL語句中的參數設為指定值 |
| [<sql:dateParam>](jstl-sql-dateparam-tag.html) | 將SQL語句中的日期參數設為指定的java.util.Date?對象值 |
| [<sql:transaction>](jstl-sql-transaction-tag.html) | 在共享數據庫連接中提供嵌套的數據庫行為元素,將所有語句以一個事務的形式來運行 |
## XML 標簽
JSTL XML標簽庫提供了創建和操作XML文檔的標簽。引用XML標簽庫的語法如下:
```
<%@ taglib prefix="x"
uri="http://java.sun.com/jsp/jstl/xml" %>
```
在使用xml標簽前,你必須將XML 和 XPath 的相關包拷貝至你的<Tomcat 安裝目錄>\lib下:
XercesImpl.jar:
下載地址: [http://www.apache.org/dist/xerces/j/](//www.apache.org/dist/xerces/j/)
xalan.jar:
下載地址: [http://xml.apache.org/xalan-j/index.html](//xml.apache.org/xalan-j/index.html)
| 標簽 | 描述 |
| --- | --- |
| [<x:out>](jstl-xml-out-tag.html) | 與<%= ... >,類似,不過只用于XPath表達式 |
| [<x:parse>](jstl-xml-parse-tag.html) | 解析 XML 數據 |
| [<x:set>](jstl-xml-set-tag.html) | 設置XPath表達式 |
| [<x:if>](jstl-xml-if-tag.html) | 判斷XPath表達式,若為真,則執行本體中的內容,否則跳過本體 |
| [<x:forEach>](jstl-xml-foreach-tag.html) | 迭代XML文檔中的節點 |
| [<x:choose>](jstl-xml-choose-tag.html) | <x:when>和<x:otherwise>的父標簽 |
| [<x:when>](jstl-xml-choose-tag.html) | <x:choose>的子標簽,用來進行條件判斷 |
| [<x:otherwise>](jstl-xml-choose-tag.html) | <x:choose>的子標簽,當<x:when>判斷為false時被執行 |
| [<x:transform>](jstl-xml-transform-tag.html) | 將XSL轉換應用在XML文檔中 |
| [<x:param>](jstl-xml-param-tag.html) | 與<x:transform>共同使用,用于設置XSL樣式表 |
## JSTL函數
JSTL包含一系列標準函數,大部分是通用的字符串處理函數。引用JSTL函數庫的語法如下:
```
<%@ taglib prefix="fn"
uri="http://java.sun.com/jsp/jstl/functions" %>
```
| 函數 | 描述 |
| --- | --- |
| [fn:contains()](jstl-function-contains.html) | 測試輸入的字符串是否包含指定的子串 |
| [fn:containsIgnoreCase()](jstl-function-containsignoreCase.html) | 測試輸入的字符串是否包含指定的子串,大小寫不敏感 |
| [fn:endsWith()](jstl-function-endswith.html) | 測試輸入的字符串是否以指定的后綴結尾 |
| [fn:escapeXml()](jstl-function-escapexml.html) | 跳過可以作為XML標記的字符 |
| [fn:indexOf()](jstl-function-indexof.html) | 返回指定字符串在輸入字符串中出現的位置 |
| [fn:join()](jstl-function-join.html) | 將數組中的元素合成一個字符串然后輸出 |
| [fn:length()](jstl-function-length.html) | 返回字符串長度 |
| [fn:replace()](jstl-function-replace.html) | 將輸入字符串中指定的位置替換為指定的字符串然后返回 |
| [fn:split()](jstl-function-split.html) | 將字符串用指定的分隔符分隔然后組成一個子字符串數組并返回 |
| [fn:startsWith()](jstl-function-startswith.html) | 測試輸入字符串是否以指定的前綴開始 |
| [fn:substring()](jstl-function-substring.html) | 返回字符串的子集 |
| [fn:substringAfter()](jstl-function-substringafter.html) | 返回字符串在指定子串之后的子集 |
| [fn:substringBefore()](jstl-function-substringbefore.html) | 返回字符串在指定子串之前的子集 |
| [fn:toLowerCase()](jstl-function-tolowercase.html) | 將字符串中的字符轉為小寫 |
| [fn:toUpperCase()](jstl-function-touppercase.html) | 將字符串中的字符轉為大寫 |
| [fn:trim()](jstl-function-trim.html) | 移除首位的空白符 |
- Java 基礎
- Java 簡介
- Java開發環境配置
- Java基礎語法
- Java對象和類
- Java基本數據類型
- Java變量類型
- Java修飾符
- Java運算符
- Java循環結構 - for, while 及 do...while
- Java分支結構 - if...else/switch
- Java Number類
- Java Character類
- Java String類
- Java StringBuffer和StringBuilder類
- Java 數組
- Java 日期時間
- Java正則表達式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 異常處理
- Java 面向對象
- Java 繼承
- Java 重寫(Override)與重載(Overload)
- Java 多態
- Java 抽象類
- Java 接口
- Java 包(package)
- Java 高級教程
- Java 數據結構
- Java Enumeration接口
- Java Bitset類
- Java Vector 類
- Java Stack 類
- Java Dictionary 類
- Java Hashtable 接口
- Java Properties 接口
- Java 集合框架
- Java 泛型
- Java序列化
- Java 網絡編程
- Java 發送郵件
- Java 多線程編程
- Java Applet基礎
- Java 文檔注釋
- Servlet 教程
- Servlet 簡介
- Servlet 環境設置
- Servlet 生命周期
- Servlet 實例
- Servlet 表單數據
- Servlet 客戶端 HTTP 請求
- Servlet 服務器 HTTP 響應
- Servlet HTTP 狀態碼
- Servlet 編寫過濾器
- Servlet 異常處理
- Servlet Cookies 處理
- Servlet Session 跟蹤
- Servlet 數據庫訪問
- Servlet 文件上傳
- Servlet 處理日期
- Servlet 網頁重定向
- Servlet 點擊計數器
- Servlet 自動刷新頁面
- Servlet 發送電子郵件
- Servlet 包
- Servlet 調試
- Servlet 國際化
- JSP 基礎
- JSP 簡介
- JSP 開發環境搭建
- JSP 結構
- JSP 生命周期
- JSP 語法
- JSP 指令
- JSP 動作元素
- JSP 動作元素
- JSP 隱含對象
- JSP 客戶端請求
- JSP 服務器響應
- JSP HTTP 狀態碼
- JSP 表單處理
- JSP 過濾器
- JSP Cookies 處理
- JSP Session
- JSP 文件上傳
- JSP 日期處理
- JSP 頁面重定向
- JSP 點擊量統計
- JSP 自動刷新
- JSP 發送郵件
- JSP 高級教程
- JSP 標準標簽庫(JSTL)
- JSP 連接數據庫
- JSP XML 數據處理
- JSP JavaBean
- JSP 自定義標簽
- JSP 表達式語言
- JSP 異常處理
- JSP 調試
- JSP 國際化
- 免責聲明