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() | 将字元串用指定的分隔符分隔然後組成一個子字元串數組并傳回 |
… |