JSTL概念
JSTL(JavaServer Pages Standard Tag Library,JSP標(biāo)準(zhǔn)標(biāo)簽庫)是一個不斷完善的開放源代碼的JSP標(biāo)簽庫,是由apache的jakarta小組來維護的。JSTL只能運行在支持JSP1.2和Servlet2.3規(guī)范的容器上,如tomcat 4.x。在JSP 2.0中也是作為標(biāo)準(zhǔn)支持的。
JSTL 1.0 發(fā)布于 2002 年 6 月,由四個定制標(biāo)記庫(core、format、xml 和 sql)和一對通用標(biāo)記庫驗證器(ScriptFreeTLV 和 PermittedTaglibsTLV)組成。core 標(biāo)記庫提供了定制操作,通過限制了作用域的變量管理數(shù)據(jù),以及執(zhí)行頁面內(nèi)容的迭代和條件操作。它還提供了用來生成和操作 URL 的標(biāo)記。顧名思義,format 標(biāo)記庫定義了用來格式化數(shù)據(jù)(尤其是數(shù)字和日期)的操作。它還支持使用本地化資源束進行 JSP 頁面的國際化。xml 庫包含一些標(biāo)記,這些標(biāo)記用來操作通過 XML 表示的數(shù)據(jù),而 sql 庫定義了用來查詢關(guān)系數(shù)據(jù)庫的操作。
如果要使用JSTL,則必須將jstl.jar和 standard.jar文件放到classpath中,如果你還需要使用XML processing及Database access (SQL)標(biāo)簽,還要將相關(guān)JAR文件放到classpath中,這些JAR文件全部存在于下載回來的zip文件中。
JSTL目的
JSTL標(biāo)簽庫的使用是為類彌補html表的不足,規(guī)范自定義標(biāo)簽的使用而誕生的。在告別modle1模式開發(fā)應(yīng)用程序后,人們開始注重軟件的分層設(shè)計,不希望在jsp頁面中出現(xiàn)java邏輯代碼,同時也由于自定義標(biāo)簽的開發(fā)難度較大和不利于技術(shù)標(biāo)準(zhǔn)化產(chǎn)生了自定義標(biāo)簽庫。JSTL標(biāo)簽庫可分為5類:
標(biāo)簽庫 ? ???????? 標(biāo)簽庫的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??????? ? ? ? ? ?? ? sql
XML ? ? ? ? ? ? ?? http://java.sun.com/jsp/jstl/xml ? ? ? ? ? ? ? ? ?? x
Functions ? ? ? http://java.sun.com/jsp/jstl/functions ? ? ? ? fn
引用格式
1、導(dǎo)入standard.jar和jstl.jar。
2、在JSP頁面上引入 JSTL 的引用。如
<%@?taglib?uri="http://java.sun.com/jsp/jstl/core"?prefix="c"?%>?
JSTL標(biāo)簽庫的使用
1、核心標(biāo)簽庫
JSTL的核心標(biāo)簽庫標(biāo)簽共13個,從功能上可以分為4類:表達式控制標(biāo)簽、流程控制標(biāo)簽、循環(huán)標(biāo)簽、URL操作標(biāo)簽。使用這些標(biāo)簽?zāi)軌蛲瓿蒍SP頁面的基本功能,減少編碼工作。如:
表達式控制標(biāo)簽:out標(biāo)簽、set標(biāo)簽、remove標(biāo)簽、catch標(biāo)簽。
流程控制標(biāo)簽:if標(biāo)簽、choose標(biāo)簽、when標(biāo)簽、otherwise標(biāo)簽。
循環(huán)標(biāo)簽:forEach標(biāo)簽、forTokens標(biāo)簽。
URL操作標(biāo)簽:import標(biāo)簽、url標(biāo)簽、redirect標(biāo)簽。
常用標(biāo)簽的詳解:(常用的為if標(biāo)簽和forEach標(biāo)簽)
(1)、<c:out>標(biāo)簽:用來顯示數(shù)據(jù)對象(字符串、表達式)的內(nèi)容或結(jié)果。相當(dāng)于?<% out.println(“字符串”)%> 或?<%=表達式%>。
(2)、<c:if>標(biāo)簽:同程序中的if作用相同,用來實現(xiàn)條件控制
【語法1】:Java代碼???? <c:if?test=”條件1”?var=”name”?[scope=”page|request|session|application”]>??
【語法2】:Java代碼???? <c:if?test=”條件2”?var=”name”?[scope=”page|request|session|application”]>結(jié)果2</c:if>?
????????????? 【參數(shù)說明】:
??????????????????????????????? ?? I、test屬性用于存放判斷的條件,一般使用EL表達式來編寫。
?????????????????????????????? ?? II、var指定名稱用來存放判斷的結(jié)果類型為true或false。
????????????????????????????????? III、scope用來存放var屬性存放的范圍。
(3)、<c:forEach>標(biāo)簽:該標(biāo)簽根據(jù)循環(huán)條件遍歷集合(Collection)中的元素。
?<c:forEach ? var=”name” ?? items=”Collection” ? varStatus=”StatusName” ? begin=”begin” ? end=”end”?? step=”step”>
所有內(nèi)容?????
</c:forEach>??
????????????? 【參數(shù)說明】:
??????????????????????????????? ??I、var設(shè)定變量名用于存儲從集合中取出元素。
??????????????????????? ? ??????? II、items指定要遍歷的集合。
????????????????????? ? ?????? ? III、varStatus設(shè)定變量名,該變量用于存放集合中元素的信息。
??????????????????????? ? ?? ? ? IV、begin、end用于指定遍歷的起始位置和終止位置(可選)。
?????????????????????????????? ? V、step指定循環(huán)的步長。
(4)、<c:import>標(biāo)簽:該標(biāo)簽可以把其他靜態(tài)或動態(tài)文件包含到本JSP頁面。同<jsp:include>的區(qū)別為:只能包含同一個web應(yīng)用中的文件。而<c:import>可以包含其他web應(yīng)用中的文件,甚至是網(wǎng)絡(luò)上的資源。
<c:import?url=”url”?[context=”context”][?value=”value”][scope=”page|request|session|application”]?[charEncoding=”encoding”]>??
?<c:import?url=”url”?varReader=”name”?[context=”context”][charEncoding=”encoding”]>??
【參數(shù)說明】:
?I、URL為資源的路徑,當(dāng)應(yīng)用的資源不存在時系統(tǒng)會拋出異常,因此該語句應(yīng)該放在語句塊中捕獲。絕對路徑和相對路徑
?II、context屬性用于在訪問其他web應(yīng)用的文件時,指定根目錄。例如,訪問root下的index.jsp的實現(xiàn)代碼為:
Java代碼??? <c:import?url=”/index.jsp”?context=”/root”>?? 等同于webapps/root/index.jsp
?III、var 屬性表示為資源起的別名。
?IV、scope 屬性標(biāo)識該資源訪問的范圍。
?V、charEncoding 屬性標(biāo)識該資源的編碼方式。
VI、varReader 這個參數(shù)的類型是Reader,用于讀取資源。
詳細(xì)檢索地址:http://leon906998248.iteye.com/blog/1502569