JSTL(JavaServer Pages Standard Tag Library肋殴,JSP標(biāo)準(zhǔn)標(biāo)簽庫(kù))是apache對(duì)EL表達(dá)式的一個(gè)拓展庫(kù)洽沟。JSTL支持通用的以故、結(jié)構(gòu)化任務(wù)。內(nèi)部擁有豐富的標(biāo)簽裆操。如條件判斷怒详、循環(huán)炉媒、SQL標(biāo)簽等。JSTL標(biāo)簽大致可以分為5類昆烁,核心標(biāo)簽吊骤、格式化標(biāo)簽。SQL 標(biāo)簽静尼、XML 標(biāo)簽白粉、JSTL函數(shù)
參考自菜鳥教程
環(huán)境配置
- 下載、添加jar包
首先我們需要去官網(wǎng)下載最新版本的DTD文件http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/ 并且將文件中的jstl.jar和standard.jar拷貝到項(xiàng)目的lib中鼠渺。Tomcat的lib也需要拷貝這兩個(gè)jar包鸭巴。
-
在IDEA配置
IDEA除了添加jar之外還要在Setting中設(shè)置
Setting中搜索DTD——>選擇Schemas and DTDs——>點(diǎn)擊右上角加號(hào)添加http://java.sun.com/jsp/jstl/core就行了
核心標(biāo)簽
核心標(biāo)簽是JSTL最常用的標(biāo)簽,我們?cè)趈sp文件頭部引入核心標(biāo)簽庫(kù)
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" %>
下面分別介紹下最常用的核心標(biāo)簽
- <c:out> 用于在JSP中顯示數(shù)據(jù)系冗,就像<%= ... >
- <c:set> 用于保存數(shù)據(jù)
set標(biāo)簽實(shí)現(xiàn)一個(gè)頁(yè)面訪問數(shù)
<c:set var="totalCount" value="${totalCount+1}" scope="application"/>
<c:set var="count" value="${count+1}" scope="session"> </c:set>
總訪問數(shù):${totalCount}
其中您的訪問數(shù):${count}
- <c:catch> 用來(lái)處理產(chǎn)生錯(cuò)誤的異常狀況奕扣,并且將錯(cuò)誤信息儲(chǔ)存起來(lái)
- <c:if> if判斷薪鹦,但是沒有else功能掌敬。如果要使用else可以使用 <c:choose>
- <c:import> 類似于jsp中<jsp:include>導(dǎo)入資源
- <c:forEach> forEach循環(huán),支持多種集合
forEach標(biāo)簽實(shí)現(xiàn)100以內(nèi)的偶數(shù)
<c:forEach var="num" begin="2" end="100" step="2">
<div>${num}</div>
</c:forEach>
- <c:forTokens> 根據(jù)指定的分隔符來(lái)分隔內(nèi)容并迭代輸出,類似于forEach標(biāo)簽
- <c:param> 用來(lái)給包含或重定向的頁(yè)面?zhèn)鬟f參數(shù)
- <c:redirect> 重定向至一個(gè)新的URL
- <c:url> 使用可選的查詢參數(shù)來(lái)創(chuàng)造一個(gè)URL
格式化標(biāo)簽
fmt標(biāo)簽是輔助型功能標(biāo)簽池磁,我們?cè)趈sp中引入格式化標(biāo)簽庫(kù)
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>tagl
下面分別介紹下最常用的格式化標(biāo)簽
- <fmt:requestEncoding> 設(shè)置request的字符編碼
- <fmt:setLocale> 設(shè)置本地地區(qū)的數(shù)據(jù)格式
- <fmt:timeZone> 顯示全球時(shí)間
- <fmt:setTimeZone> 設(shè)置時(shí)區(qū)
- <fmt:formatNumber> 使用指定的格式或精度格式化數(shù)字
- <fmt:parseNumber> 解析一個(gè)代表著數(shù)字奔害,貨幣或百分比的字符串
- <fmt:formatDate> 使用指定的風(fēng)格或模式格式化日期和時(shí)間
- <fmt:parseDate> 解析一個(gè)代表著日期或時(shí)間的字符串
- <fmt:message> 顯示資源配置文件信息
SQL標(biāo)簽
JSTL SQL標(biāo)簽庫(kù)提供了與關(guān)系型數(shù)據(jù)庫(kù)(Oracle,MySQL地熄,SQL Server等等)進(jìn)行交互的標(biāo)簽华临。使用JSTL操作數(shù)據(jù)庫(kù)要比使用JSP中使用Scriptlet操作數(shù)據(jù)庫(kù)簡(jiǎn)單,引用SQL標(biāo)簽庫(kù)的語(yǔ)法如下:
<%@ taglib prefix="sql"
uri="http://java.sun.com/jsp/jstl/sql" %>
下面分別介紹下最常用的SQL標(biāo)簽
- <sql:setDataSource> 指定數(shù)據(jù)源端考,連接數(shù)據(jù)庫(kù)
- <sql:query> 運(yùn)行SQL查詢語(yǔ)句
- <sql:update> 運(yùn)行SQL更新語(yǔ)句
- <sql:param> 將SQL語(yǔ)句中的參數(shù)設(shè)為指定值
- <sql:dateParam> 將SQL語(yǔ)句中的日期參數(shù)設(shè)為指定的java.util.Date 對(duì)象值
- <sql:transaction> 在共享數(shù)據(jù)庫(kù)連接中提供嵌套的數(shù)據(jù)庫(kù)行為元素雅潭,將所有語(yǔ)句以一個(gè)事務(wù)的形式來(lái)運(yùn)行
XML標(biāo)簽
JSTL XML標(biāo)簽是創(chuàng)建操作XML文檔的一個(gè)標(biāo)簽庫(kù)。引用語(yǔ)法如下:
<%@ taglib prefix="x"
uri="http://java.sun.com/jsp/jstl/xml" %>
常用的XML標(biāo)簽
- <x:out> 與<%= ... >,類似却特,不過(guò)只用于XPath表達(dá)式
- <x:parse> 解析 XML 數(shù)據(jù)
- <x:set> 設(shè)置XPath表達(dá)式
- <x:if> 判斷XPath表達(dá)式扶供,若為真,則執(zhí)行本體中的內(nèi)容裂明,否則跳過(guò)本體
- <x:forEach> 迭代XML文檔中的節(jié)點(diǎn)
- <x:choose> <x:when>和<x:otherwise>的父標(biāo)簽
- <x:when> <x:choose> 的子標(biāo)簽椿浓,用來(lái)進(jìn)行條件判斷
- <x:otherwise> <x:choose>的子標(biāo)簽,當(dāng)<x:when>判斷為false時(shí)被執(zhí)行
- <x:transform> 將XSL轉(zhuǎn)換應(yīng)用在XML文檔中
- <x:param> 與 <x:transform> 共同使用闽晦,用于設(shè)置XSL樣式表
JSTL函數(shù)
JSTL 函數(shù)主要是一些操作字符串的標(biāo)簽扳碍,引用方法如下:
<%@ taglib prefix="fn"
uri="http://java.sun.com/jsp/jstl/functions" %>
常用的函數(shù)標(biāo)簽:
- fn:contains() 測(cè)試輸入的字符串是否包含指定的子串
- fn:containsIgnoreCase() 測(cè)試輸入的字符串是否包含指定的子串,大小寫不敏感
- fn:endsWith() 測(cè)試輸入的字符串是否以指定的后綴結(jié)尾
- fn:escapeXml() 跳過(guò)可以作為XML標(biāo)記的字符
- fn:indexOf() 返回指定字符串在輸入字符串中出現(xiàn)的位置
- fn:join() 將數(shù)組中的元素合成一個(gè)字符串然后輸出
- fn:length() 返回字符串長(zhǎng)度
- fn:replace() 將輸入字符串中指定的位置替換為指定的字符串然后返回
- fn:split() 將字符串用指定的分隔符分隔然后組成一個(gè)子字符串?dāng)?shù)組并返回
- fn:startsWith() 測(cè)試輸入字符串是否以指定的前綴開始
- fn:substring() 返回字符串的子集
- fn:substringAfter() 返回字符串在指定子串之后的子集
- fn:substringBefore() 返回字符串在指定子串之前的子集
- fn:toLowerCase() 將字符串中的字符轉(zhuǎn)為小寫
- fn:toUpperCase() 將字符串中的字符轉(zhuǎn)為大寫
- fn:trim() 移除首位的空白符