一、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格式化标簽用來格式化并輸出文本、日期、時間、數字
| |
<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等等)進行互動的标簽
| |
<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下
| |
<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包含一系列标準函數,大部分是通用的字元串處理函數
| |
<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()> | 移除收尾空白字元 |