JSTL是由JCP(Java Community Process)所制定的標(biāo)準(zhǔn)規(guī)范,它主要提供給Java Web開發(fā)人員一個(gè)標(biāo)準(zhǔn)通用的標(biāo)簽函數(shù)庫(kù)。
l JSTL所提供的標(biāo)簽函數(shù)庫(kù)主要分為五大類:
Ø 核心標(biāo)簽庫(kù) (Core tag library)
Ø I18N格式標(biāo)簽庫(kù) (I18N-capable formatting tag library)
Ø SQL標(biāo)簽庫(kù) (SQL tag library)
Ø XML標(biāo)簽庫(kù) (XML tag library)
Ø 函數(shù)標(biāo)簽庫(kù) (Functions tag library)
JSTL
|
前置名稱
|
URI
|
范例
|
核心標(biāo)簽庫(kù)
|
c
|
http://java.sun.com/jsp/jstl/core
|
<c:out>
|
I18N格式標(biāo)簽庫(kù)
|
fmt
|
http://java.sun.com/jsp/jstl/fmt
|
<fmt:formatDate>
|
SQL標(biāo)簽庫(kù)
|
sql
|
http://java.sun.com/jsp/jstl/sql
|
<sql:query>
|
XML標(biāo)簽庫(kù)
|
xml
|
http://java.sun.com/jsp/jstl/xml
|
<x:forBach>
|
函數(shù)標(biāo)簽庫(kù)
|
fn
|
http://java.sun.com/jsp/jstl/functions
|
<fn:split>
|
l 使用標(biāo)準(zhǔn)的uri和prefix
Ø 把tld文件放在WEB-INF或其子目錄下面
Ø 在WEB-INF/web.xml中定義taglib元素,指定自定義的uri及其對(duì)應(yīng)的tld文件位置
<taglib>
<taglib-uri>/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
Ø 在JSP里使用自定義的uri
<%@ taglib uri="/jstl/core" prefix="c" %>
以下主要說(shuō)明了core標(biāo)簽庫(kù):
分類
|
功能分類
|
標(biāo)簽名稱
|
core
|
表達(dá)式操作
|
out
set
remove
|
流程控制
|
if
choose
when
otherwise
|
迭代操作
|
forEach
forTokens
|
URL操作
|
redirect
|
應(yīng)用時(shí)需要在JSP頁(yè)面導(dǎo)入標(biāo)簽庫(kù):<%@ taglib uri="/jstl/core" prefix="c" %>
<c:out/>
屬性:
名稱
|
說(shuō)明
|
EL
|
類型
|
必須
|
默認(rèn)值
|
value
|
需要顯示出來(lái)的值
|
Y
|
Object
|
是
|
無(wú)
|
default
|
如果value的值為null,則顯示default的值
|
Y
|
Object
|
否
|
無(wú)
|
escapeXml
|
是否轉(zhuǎn)換特殊字符,如:< 轉(zhuǎn)換成 <
|
Y
|
boolean
|
否
|
true
|
<c:set />
說(shuō)明:主要用來(lái)將變量?jī)?chǔ)存至JSP范圍中或是JavaBean的屬性中
屬性:
名稱
|
說(shuō)明
|
EL
|
類型
|
必須
|
默認(rèn)值
|
value
|
要被儲(chǔ)存的值
|
Y
|
Object
|
否
|
無(wú)
|
var
|
欲存入的變量名稱
|
N
|
String
|
否
|
無(wú)
|
scope
|
var變量的JSP范圍
|
N
|
String
|
否
|
page
|
target
|
為一JavaBean或java.util.Map對(duì)象
|
Y
|
Object
|
否
|
無(wú)
|
property
|
指定target對(duì)象的屬性
|
Y
|
String
|
否
|
無(wú)
|
<c:remove />
說(shuō)明:主要用來(lái)移除變量
屬性:
名稱
|
說(shuō)明
|
EL
|
類型
|
必須
|
默認(rèn)值
|
var
|
欲移除的變量名稱
|
N
|
String
|
是
|
無(wú)
|
scope
|
var變量的JSP范圍
|
N
|
String
|
否
|
page
|
<c:if />
屬性
名稱
|
說(shuō)明
|
EL
|
類型
|
必須
|
默認(rèn)值
|
test
|
如果表達(dá)式的結(jié)果為true,
則執(zhí)行本體內(nèi)容,false則相反
|
Y
|
boolean
|
是
|
無(wú)
|
var
|
用來(lái)儲(chǔ)存test運(yùn)算后的結(jié)果,即true或false
|
N
|
String
|
否
|
無(wú)
|
scope
|
var變量的JSP范圍
|
N
|
String
|
否
|
page
|
<c:choose /><c:when /><c:otherwise />
說(shuō)明:用途就和我們一般在程序中用的when一樣
<c:choose>
:
<c:when>
</c:when>
:
<c:otherwise>
</c:otherwise>
:
</c:choose>
屬性:
名稱
|
說(shuō)明
|
EL
|
類型
|
必須
|
默認(rèn)值
|
test
|
如果表達(dá)式的結(jié)果為true,則執(zhí)行本體內(nèi)容,false則相反
|
Y
|
boolean
|
是
|
無(wú)
|
<c:forEach />
說(shuō)明:循環(huán)控制,它可以將集合(Collection)中的成員循序?yàn)g覽一遍。運(yùn)作方式為當(dāng)條件符合時(shí),就會(huì)持續(xù)重復(fù)執(zhí)行<c:forEach>的本體內(nèi)容
屬性:
名稱
|
說(shuō)明
|
EL
|
類型
|
必須
|
默認(rèn)值
|
var
|
用來(lái)存放現(xiàn)在指到的成員
|
N
|
String
|
否
|
無(wú)
|
items
|
被迭代的集合對(duì)象
|
Y
|
Arrays
Collection
Iterator
Enumeration
Map
String
|
否
|
無(wú)
|
varStatus
|
用來(lái)存放現(xiàn)在指到的相關(guān)成員信息
|
N
|
String
|
否
|
無(wú)
|
begin
|
開始的位置
|
Y
|
int
|
否
|
0
|
end
|
結(jié)束的位置
|
Y
|
int
|
否
|
最后一個(gè)成員
|
step
|
每次迭代的間隔數(shù)
|
Y
|
int
|
否
|
1
|
varStatus屬性的四個(gè)值:
屬性
|
類型
|
意義
|
index
|
number
|
現(xiàn)在指到成員的索引
|
count
|
number
|
總共指到成員的總數(shù)
|
first
|
boolean
|
現(xiàn)在指到的成員是否為第一個(gè)成員
|
last
|
boolean
|
現(xiàn)在指到的成員是否為最后一個(gè)成員
|
<c:forTokens />
說(shuō)明:用來(lái)瀏覽一字符串中所有的成員,其成員是由定義符號(hào)(delimiters)所分隔的
屬性:
名稱
|
說(shuō)明
|
EL
|
類型
|
必須
|
默認(rèn)值
|
var
|
用來(lái)存放現(xiàn)在指到的成員
|
N
|
String
|
否
|
無(wú)
|
items
|
被迭代的字符串
|
Y
|
String
|
是
|
無(wú)
|
delims
|
定義用來(lái)分割字符串的字符
|
N
|
String
|
是
|
無(wú)
|
varStatus
|
用來(lái)存放現(xiàn)在指到的相關(guān)成員信息
|
N
|
String
|
否
|
無(wú)
|
begin
|
開始的位置
|
Y
|
int
|
否
|
0
|
end
|
結(jié)束的位置
|
Y
|
int
|
否
|
最后一個(gè)成員
|
step
|
每次迭代的間隔數(shù)
|
Y
|
int
|
否
|
1
|
URL 重寫是由 <c:url/>
操作自動(dòng)執(zhí)行的
<c:url value="/index.jsp" context="<%= request.getContextPath() %>" scope="request" var="indexUrl">
<c:param name="param1">value1</c:param>
<c:param name="param2">value2</c:param>
</c:url>
url重定向<c:redirect/>
<c:redirect>
<c:param name=""></c:param>
</c:redirect>
格式化標(biāo)簽
以下四個(gè)是相對(duì)來(lái)說(shuō)較常用的日期、數(shù)字的格式化
<fmt:formatDate value="" scope="" pattern="" var="" timeStyle="" timeZone="" type="" dateStyle=""/>
<fmt:parseDate value="" scope="" pattern="" var="" timeStyle="" timeZone="" dateStyle="" parseLocale="" type="" ></fmt:parseDate>
<fmt:formatNumber value="" scope="" currencyCode="" currencySymbol="" groupingUsed="" maxFractionDigits="" maxIntegerDigits="" minFractionDigits="" minIntegerDigits="" pattern="" type="" var=""></fmt:formatNumber>
<fmt:parseNumber value="" integerOnly="" parseLocale="" pattern="" scope="" type="" var=""></fmt:parseNumber>
以下涉及到地區(qū)環(huán)境、失去、properties配置文件、設(shè)置請(qǐng)求編碼,這些功能不是很常用
<fmt:setLocale value="" scope="" variant=""/>
<fmt:timeZone value=""></fmt:timeZone>
<fmt:setTimeZone value="" scope="" var=""/>
<fmt:bundle basename="" prefix=""></fmt:bundle>
<fmt:setBundle basename="" scope="" var=""/>
<fmt:message bundle="" key="" scope="" var=""></fmt:message>
<fmt:param value=""></fmt:param>
<fmt:requestEncoding value=""/>