天天看點

Jstl标簽庫

一、jstl:封裝了Jsp應用的通用核心功能

JSTL支援通用的、結構化的任務,比如疊代、條件判斷、XML封裝、國際化标簽、SQL标簽。

除了這些還提供了一個架構來使用內建JSTL的自定義标簽。

根據功能分類:核心标簽,格式化标簽,SQL标簽,XML标簽,JSTL函數

這些标簽取代JSP頁面上的Java代碼,進而提高程式的可讀性,降低程式的維護難度。

二、優點

1)簡化了JSP和Web應用程式的開發。

2)在應用程伺服器之間提供了一緻的接口,最大限度提高了Web應用在各應用伺服器之間的移植。

3)允許JSP設計工具與Web應用程式開發的進一步內建。

4)以一種統一的方式減少了JSP中的Scriptlets代碼數量,可以達到程式中沒有任何Scriptlets代碼。

三、JSTL庫安裝:四個相關jar包 或 內建jar包

安裝jar包後,拷貝到/WEB-INF/lib/下

使用時需要在jsp中引用标簽庫:如<%@ taglib prefix="字首" uri="引用路徑"%>

四、JSTL五大子庫

URI 字首
Core(核心庫) http://java.sun.com/jsp/jstl/core c
I18N(國際化) http://java.sun.com/jsp/jstl/fmt fmt
SQL http://java.sun.com/jsp/jstl/sql sal
XML http://java.sun.com/jsp/jstl/xml x
Functions http://java.sun.com/jsp/jstl/functions fns

1)核心标簽:核心标簽是最常用的 JSTL标簽

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core %">
<c:out> 用于在JSP中顯示資料,就像<%=...>
<c:set> 用于儲存資料
<c:remove> 用于删除資料
<c:cath> 用于處理産生錯誤的異常狀況,并且将資訊存儲起來
<c:if> 判斷語句
<c:choose> 本身隻當做<c:when>和<c:otherwise>的父标簽
<c:when> <c:choose>的子标簽,用于判斷條件是否成立
<c:otherwise> <c:choose>的子标簽,接在<c:when>标簽後,當<c:when>标簽判斷為false時被執行
<c:import> 檢索一個絕對或相對的URL,然後将其内容暴露給頁面
<c:forEach> 基礎疊代标簽,接受多種集合類型
<c:forTokens> 根據指定的分隔符來分隔内容并疊代輸出
<c:param> 用來給包含重定向的頁面傳遞參數
<c:redirect> 重定向至一個新的URL
<c:url> 使用可選的查詢參數來構造一個URL

● <c:if>:

判斷語句:<c:if test="xxx" [var="xxx] [scope="{page|request|session|application}”]>執行體</c:if>      

參數表示:① test:邏輯表達式,② var:邏輯表達式中的變量,③ scope:用于指定var變量的作用範圍,預設為page;

● <c:ForEach>:

疊代集合對象:<c:forEach items="xxx" [var="xxx"] [varStatus="xxx"] [begin="xxx"] [end="xxx"] [step="xxx"]>循環體</forEach>

疊代數組:<c:forEach begin="xxx" end="xxx" [var="xxx"] [varStatus="xxx"] [step="xxx"]>循環體</forEach>      

參數表示:

① items:用于指定疊代的對象,

② var:用于指将目前疊代到的元素儲存到page域中的名稱(可以通過${xxx}獲得對象),

③ varStatus:用于指定目前疊代狀态資訊的對象儲存到page域中的名稱

 (count表示元素在集合中的序号,從1開始;index表示目前元素在集合中的索引,從0開始;first表示目前元素是否為集合中的第一個元素;last表示目前元素是否為集合中的最後一個元素);

④ begin:屬性用于指定集合中的第幾個元素開始疊代,begin索引從0開始;

⑤ setp:屬性用于指定疊代的步長,即疊代的增長因子;

2)格式化标簽:JSTL格式化标簽用來格式化并輸出文本、日期、時間、數字

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>      
<fmt:formatNumber> 使用指定的格式或精度格式化數字
<fmt:parseNumber> 解析一個代表這數字、貨币或百分比的字元串
<fmt:formatDate> 使用指定的風格或模式格式化日期和時間
<fmt:parseDate> 解析一個代表着日期或時間的字元串
<fmt:bundle> 綁定資源
<fmt:setLocale> 指定地區
<fmt:setBundle>
<fmt:timeZone> 指定時區
<fmt:setTimeZone>
<fmt:message> 顯示資源配置檔案資訊
<fmt:requestEncoding> 設定request的字元編碼

3)SQL标簽:JSTL SQL标簽庫提供了與關系型資料庫(Oracle,MySQL,SQL Server等等)進行互動的标簽

<%@ 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> 在共享資料庫連結中提供嵌套的資料庫行為作為元素,将所有語句以一個事務的形式來運作

4)XML标簽:JSTL XML标簽庫提供了建立和操作XML文檔的标簽

需要jar包:Xerceslmpl.jar、xalan,安裝到Tomcat安裝目錄的lib下

<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>      
<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:rtansform> 将XSL轉換應用在XML文檔中
<x:param> 與<x:transform>共同使用,用于設定XSL樣式表

5)JSTL函數:JSTL包含一系列标準函數,大部分是通用的字元串處理函數

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>      
<fn:contains()> 測試輸入的字元串是否包含指定的子串,大小寫敏感
<fn:containslgnoreCase()> 測試輸入的字元串是否包含指定的子串,大小寫不敏感
<fn:endsWith()> 測試輸入的字元串是否以指定的字尾結尾
<fn:escapeXml()> 跳過可以作為XML标記的字元
<fn:indexOf()> 傳回指定字元串在輸入字元串中出現的位置
<fn:join()> 将數組中的元素合成一個字元串然後輸出
<fn:length()> 傳回字元串長度
<fn:replace()> 将輸入字元串中指定的位置替換為指定的字元串然後傳回
<fn:split()> 将字元串用指定的分隔符分隔然後組成一個子字元串數組并傳回
<fn:startsWith()> 測試輸入字元串是否以指定的字首開始
<fn:substring()> 傳回字元串的子集
<fn:substringAfter()> 傳回字元串在指定子串後的子集
<fn:substringBefore()> 傳回字元串在指定子串前的子集
<fn:toLowerCase()> 将字元串中的字元轉為小寫
<fn:toUpperCase()> 将字元串中的字元轉為大寫
<fn:trim()> 移除收尾空白字元