JSTL(Java Standard Tag Library) 標記庫的使用
Posted on 2010-06-06 02:42 Gavin.lee 閱讀(1054) 評論(0) 編輯 收藏 所屬分類: jsp 【勿忘】JSTL是由JCP(Java Community Process)所制定的標準規范,它主要提供給Java Web開發人員一個標準通用的標簽函數庫。
l JSTL所提供的標簽函數庫主要分為五大類:
Ø 核心標簽庫 (Core tag library)
Ø I18N格式標簽庫 (I18N-capable formatting tag library)
Ø SQL標簽庫 (SQL tag library)
Ø XML標簽庫 (XML tag library)
Ø 函數標簽庫 (Functions tag library)
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:forBach> |
函數標簽庫 |
fn |
http://java.sun.com/jsp/jstl/functions |
<fn:split> |
l 使用標準的uri和prefix
Ø 把tld文件放在WEB-INF或其子目錄下面
Ø 在WEB-INF/web.xml中定義taglib元素,指定自定義的uri及其對應的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" %>
以下主要說明了core標簽庫:
分類 |
功能分類 |
標簽名稱 |
core |
表達式操作 |
out set remove |
流程控制 |
if choose when otherwise |
|
迭代操作 |
forEach forTokens |
|
URL操作 |
redirect |
應用時需要在JSP頁面導入標簽庫:<%@ taglib uri="/jstl/core" prefix="c" %>
<c:out/>
屬性:
名稱 |
說明 |
EL |
類型 |
必須 |
默認值 |
value |
需要顯示出來的值 |
Y |
Object |
是 |
無 |
default |
如果value的值為null,則顯示default的值 |
Y |
Object |
否 |
無 |
escapeXml |
是否轉換特殊字符,如:< 轉換成 < |
Y |
boolean |
否 |
true |
<c:set />
說明:主要用來將變量儲存至JSP范圍中或是JavaBean的屬性中
屬性:
名稱 |
說明 |
EL |
類型 |
必須 |
默認值 |
value |
要被儲存的值 |
Y |
Object |
否 |
無 |
var |
欲存入的變量名稱 |
N |
String |
否 |
無 |
scope |
var變量的JSP范圍 |
N |
String |
否 |
page |
target |
為一JavaBean或java.util.Map對象 |
Y |
Object |
否 |
無 |
property |
指定target對象的屬性 |
Y |
String |
否 |
無 |
<c:remove />
說明:主要用來移除變量
屬性:
名稱 |
說明 |
EL |
類型 |
必須 |
默認值 |
var |
欲移除的變量名稱 |
N |
String |
是 |
無 |
scope |
var變量的JSP范圍 |
N |
String |
否 |
page |
<c:if />
屬性
名稱 |
說明 |
EL |
類型 |
必須 |
默認值 |
test |
如果表達式的結果為true, 則執行本體內容,false則相反 |
Y |
boolean |
是 |
無 |
var |
用來儲存test運算后的結果,即true或false |
N |
String |
否 |
無 |
scope |
var變量的JSP范圍 |
N |
String |
否 |
page |
<c:choose /><c:when /><c:otherwise />
說明:用途就和我們一般在程序中用的when一樣
<c:choose>
:
<c:when>
</c:when>
:
<c:otherwise>
</c:otherwise>
:
</c:choose>
屬性:
名稱 |
說明 |
EL |
類型 |
必須 |
默認值 |
test |
如果表達式的結果為true,則執行本體內容,false則相反 |
Y |
boolean |
是 |
無 |
<c:forEach />
說明:循環控制,它可以將集合(Collection)中的成員循序瀏覽一遍。運作方式為當條件符合時,就會持續重復執行<c:forEach>的本體內容
屬性:
名稱 |
說明 |
EL |
類型 |
必須 |
默認值 |
var |
用來存放現在指到的成員 |
N |
String |
否 |
無 |
items |
被迭代的集合對象 |
Y |
Arrays Collection Iterator Enumeration Map String |
否 |
無 |
varStatus |
用來存放現在指到的相關成員信息 |
N |
String |
否 |
無 |
begin |
開始的位置 |
Y |
int |
否 |
0 |
end |
結束的位置 |
Y |
int |
否 |
最后一個成員 |
step |
每次迭代的間隔數 |
Y |
int |
否 |
1 |
varStatus屬性的四個值:
屬性 |
類型 |
意義 |
index |
number |
現在指到成員的索引 |
count |
number |
總共指到成員的總數 |
first |
boolean |
現在指到的成員是否為第一個成員 |
last |
boolean |
現在指到的成員是否為最后一個成員 |
<c:forTokens />
說明:用來瀏覽一字符串中所有的成員,其成員是由定義符號(delimiters)所分隔的
屬性:
名稱 |
說明 |
EL |
類型 |
必須 |
默認值 |
var |
用來存放現在指到的成員 |
N |
String |
否 |
無 |
items |
被迭代的字符串 |
Y |
String |
是 |
無 |
delims |
定義用來分割字符串的字符 |
N |
String |
是 |
無 |
varStatus |
用來存放現在指到的相關成員信息 |
N |
String |
否 |
無 |
begin |
開始的位置 |
Y |
int |
否 |
0 |
end |
結束的位置 |
Y |
int |
否 |
最后一個成員 |
step |
每次迭代的間隔數 |
Y |
int |
否 |
1 |
URL 重寫是由 <c:url/>
操作自動執行的
<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>
格式化標簽
以下四個是相對來說較常用的日期、數字的格式化
<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>
以下涉及到地區環境、失去、properties配置文件、設置請求編碼,這些功能不是很常用
<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=""/>