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:out> |
列印輸出 |
<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:formatDate> |
使用指定的風格或模式格式化日期和時間 |
<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:query> |
執行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表示式,若為真,則執行本體中的內容,否則跳過本體 |
<x:forEach> |
迭代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() |
將字串用指定的分隔符分隔然後組成一個子字串陣列並返回 |
… |