天天看點

12.标準标簽庫(JSTL)

1.JSTL标簽庫安裝

    JSTL的概念:  

JSP标準标簽庫(JSP Standard Tag Library)是一個實作 Web 應用程式中常見的通用功能的定制标記庫集

功能包括疊代和條件判斷、資料管理格式化、XML 操作以及資料庫通路

JSTL标簽庫由幾個子标簽庫組成,主要分為以下幾種:核心标簽、XML标簽、格式化标簽(I18N)、SQL标簽、函數标簽庫。

     JSTL的安裝:

将jstl.jar、standard.jar放在WEB-INF/lib目錄下

jstl.jar提供了标簽開發接口類

standard.jar 提供了标簽庫的實作類

在JSP中使用taglib僞指令導入JSTL标簽庫

<%@taglib prefix=“c” uri=“http://java.sun.com/jstl/core”%>導入JSTL核心标簽庫

通過<c:XXX>可以使用JSTL核心标簽庫标簽

     标簽庫集:

JSTL 前置名 URI 示例

核心

标簽庫

c http://java.sun.com/jsp/jstl/core <c:out>
I18N格式标簽庫 fmt http://java.sun.com/jsp/jstl/fmt <fmt:formatDate>
SQL sql http://java.sun.com/jsp/jstl/sql <sql:query>
XML标簽庫 xml http://java.sun.com/jsp/jstl/xml <x:forEach>
函數 fn http://java.sun.com/jsp/jstl/functions ${fn:split()}

       JSTL核心标簽庫

标簽 描述
<c:catch> 捕獲異常
列印輸出
<c:set> 設定變量值
<c:remove> 删除變量
<c:if> 條件判斷
<c:choose>
<c:forEach> 循環控制
<c:forToken>
<c:url> 重寫URL位址
<c:import> 導入資源
<c:redirect> 重定向請求

2.一般用途的JSTL标簽:

<c:catch>捕獲JSP頁面抛出的異常

例<c:catch var=“e”> action that might throw an exception</c:catch>

<c:out>列印輸出内容到頁面

類似JSP表達式

屬性value包含特殊字元,使用轉義字元

屬性name變量沒有初始化,使用default屬性指定預設值

3.屬性用途的JSTL标簽

盡管EL可以靈活地操作變量,但不能聲明或删除變量

<c:set>标簽設定變量值或對象的屬性值

<c:set var=“num” value=“${4*4}” />

<c:set target=“user”property=“userName”>${“susan”}</c:set>

<c:remove>用于從指定作用域内删除變量

<c:remove var=“num”scope=“session”/>

4.控制用途的JSTL标簽

(1)<c:if>與java語言的if語句最大的不同是沒有else語句對應标簽

<c:if test=“${x==9}”>${x}</c:if>

(2)<c:choose>類似Java的switch-case語句。

該标簽隻當做<c:when>和<c:otherwise>的父标簽

(3)<c:forEach>和<c:forTokens>類似于Java的for語句

<c:forEach>使用begin、end、step屬性指定循環次數

對于集合和字元串使用items屬性指定循環對象

<c:forEach>提供varStatus屬性,用來存放現在指到的成員的資訊。另外四個屬性:

index:現在指到成員的索引

count:總共指到成員的總數

first:現在指到的成員是否為第一個成員

last:現在指到的成員是否為最後一個成員

5.其他種類的标簽

處理與URL相關的标簽

<c:url>用來産生一個URL,“/”表示上下文路徑

<c:import>可以把其他靜态或動态檔案包含至本身JSP頁面。與JSP動作<jsp:include>的不同在于<c:import>可以包含位于Web程式之外的資源

<c:redirect>用于把客戶請求重定向到另一個資源

<fmt:formatNumber> 使用指定的格式或精度格式化數字
<fmt:parseNumber> 解析一個代表着數字,貨币或百分比的字元串
使用指定的風格或模式格式化日期和時間
<fmt:parseDate> 解析一個代表着日期或時間的字元串
<fmt:bundle> 綁定資源
<fmt:setLocale> 指定地區
<fmt:setBundle>
<fmt:timeZone> 指定時區
<fmt:setTimeZone>
<fmt:message> 顯示資源配置檔案資訊
<fmt:requestEncoding> 設定request的字元編碼

       SQL标簽:

JSTL SQL标簽庫提供了與關系型資料庫(Oracle,MySQL,SQL Server等等)進行互動的标簽。引用SQL标簽庫的文法如下:

<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>

<sql:setDataSource> 指定資料源
運作SQL查詢語句
<sql:update> 運作SQL更新語句
<sql:param> 将SQL語句中的參數設為指定值
<sql:dateParam> 将SQL語句中的日期參數設為指定的java.util.Date 對象值
<sql:transaction> 在共享資料庫連接配接中提供嵌套的資料庫行為元素,将所有語句以一個事務的形式來運作

XML标簽:

JSTL XML标簽庫提供了建立和操作XML文檔的标簽。引用XML标簽庫的文法如下:

<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>

在使用xml标簽前,還需要導入XercesImpl.jar和xalan.jar庫

http://www.apache.org/dist/xerces/j/

http://xml.apache.org/xalan-j/index.html

<x:out> 與<%= ... >,類似,不過隻用于XPath表達式
<x:parse> 解析 XML 資料
<x:set> 設定XPath表達式
<x:if> 判斷XPath表達式,若為真,則執行本體中的内容,否則跳過本體
疊代XML文檔中的節點
<x:choose> <x:when>和<x:otherwise>的父标簽
<x:when> <x:choose>的子标簽,用來進行條件判斷
<x:otherwise> <x:choose>的子标簽,當<x:when>判斷為false時被執行
<x:transform> 将XSL轉換應用在XML文檔中
<x:param> 與<x:transform>共同使用,用于設定XSL樣式表

JSTL函數:

JSTL包含一系列标準函數,大部分是通用的字元串處理函數。引用JSTL函數庫的文法如下:

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

fn:contains() 測試輸入的字元串是否包含指定的子串
fn:containsIgnoreCase() 測試輸入的字元串是否包含指定的子串,大小寫不敏感
fn:endsWith() 測試輸入的字元串是否以指定的字尾結尾
fn:escapeXml() 跳過可以作為XML标記的字元
fn:indexOf() 傳回指定字元串在輸入字元串中出現的位置
fn:join() 将數組中的元素合成一個字元串然後輸出
fn:length() 傳回字元串長度
fn:replace() 将輸入字元串中指定的位置替換為指定的字元串然後傳回
fn:split() 将字元串用指定的分隔符分隔然後組成一個子字元串數組并傳回