JSTL(Java server pages standarded tag library,即JSP標(biāo)準(zhǔn)標(biāo)簽庫)是由JCP(Java community Proces)所制定的標(biāo)準(zhǔn)規(guī)范,它主要提供給Java Web開發(fā)人員一個標(biāo)準(zhǔn)通用的標(biāo)簽庫,并由Apache的Jakarta小組來維護(hù)。開發(fā)人員可以利用這些標(biāo)簽取代JSP頁面上的Java代碼,從而提高程序的可讀性,降低程序的維護(hù)難度。
JSTL的英文全稱是JavaServer Pages Standard Tag Library,中文全稱是JSP標(biāo)準(zhǔn)標(biāo)識庫。JSTL技術(shù)標(biāo)準(zhǔn)是由JCP(lava Community Process)組織的JSR052專家組發(fā)布,Apache組織將其列入Jakarta項(xiàng)目,Sun公司將JSTL的程序包加入互聯(lián)網(wǎng)服務(wù)開發(fā)工具包內(nèi)(Web Services Developer Pack(WSDP)),作為JSP技術(shù)應(yīng)用的一個標(biāo)準(zhǔn)。
JSTL標(biāo)簽是基于JSP頁面的,這些標(biāo)簽可以插入在JSP代碼中,本質(zhì)上JSTL也是提前定義好的一組標(biāo)簽,這些標(biāo)簽封裝了不同的功能,在頁面上調(diào)用標(biāo)簽時,就等于調(diào)用了封裝起來的功能。JSTL的目標(biāo)是簡化JSP頁面的設(shè)計(jì)。對于頁面設(shè)計(jì)人員來說,使用腳本語言操作動態(tài)數(shù)據(jù)是比較困難的,而采用標(biāo)簽和表達(dá)式語言則相對容易,JSTL的使用為頁面設(shè)計(jì)人員和程序開發(fā)人員的分工協(xié)作提供了便利。
JSTL標(biāo)識庫的作用是減少JSP文件的Java代碼,使Java代碼與HTML代碼分離,所以JSTL標(biāo)識庫符合MVC設(shè)計(jì)理念。MVC設(shè)計(jì)理念的優(yōu)勢是將動作控制、數(shù)據(jù)處理、結(jié)果顯示三者分離。
在JSP誕生之初,JSP提供了在HTML代碼中嵌入Java代碼的特性,這使得開發(fā)者可以利用Java語言的優(yōu)勢來完成許多復(fù)雜的業(yè)務(wù)邏輯。但是,隨后開發(fā)者發(fā)現(xiàn)在HTML代碼中嵌入過多的Java代碼,程序員對于動輒上千行的JSP代碼基本喪失了維護(hù)能力,非常不利于JSP的維護(hù)和擴(kuò)展?;谏鲜龅倪@個問題,開發(fā)者嘗試著使用一種新的技術(shù)來解決上面這些問題。因此,從JSP1.1規(guī)范后,JSP增加了自定義標(biāo)簽庫的支持,提供了Java腳本的復(fù)用性,提高了開發(fā)者的開發(fā)效率。
JSTL是SUN公司發(fā)布的一個針對JSP開發(fā)的新組件。JSTL允許用戶使用標(biāo)簽(Tags)來進(jìn)行JSP頁面開發(fā),而不是使用傳統(tǒng)的JSP腳本代碼方式開發(fā)。JSTL幾乎能夠做到傳統(tǒng)JSP腳本代碼能做的任何事情。
JSTL包含了和以下操作相關(guān)的標(biāo)簽:
1、核心標(biāo)簽:核心標(biāo)簽庫是整個JSTL中最常用的部分,主要由以下幾部分組成:基本輸入輸出、流程控制、迭代操作和URL操作。負(fù)責(zé)Web應(yīng)用的常見工作,如:循環(huán)、表達(dá)式賦值、基本輸入輸出等。
2、I18N格式標(biāo)簽庫:用來格式化顯示數(shù)據(jù)的工作如:對不同區(qū)域的日期格式化等。
3、XML標(biāo)簽庫:用來訪問XML文件的工作,支持JSP對XML文檔的處理。
4、數(shù)據(jù)庫標(biāo)簽庫:SQL標(biāo)簽庫包括了大部分訪問數(shù)據(jù)庫的邏輯操作,包括查詢、更新、事務(wù)處理、設(shè)置數(shù)據(jù)源等??梢宰鲈L問數(shù)據(jù)庫的工作。
5、函數(shù)標(biāo)簽庫:用來讀取已經(jīng)定義的某個函數(shù)。
結(jié)合EL表達(dá)式來使用,代替jsp頁面中的scriptlet。
• core:核心類庫 if foreach …
• fmt:格式化|國際化
• xml:已過時
• sql:已過時
• 函數(shù)庫:平時很少使用
1、導(dǎo)入jar包 (jstl.jar和standard.jar)
2、在頁面上導(dǎo)入標(biāo)簽庫
<%@taglib prefix="" uri=""%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3、引用方式:c標(biāo)簽所需功能
1、c:if
使用方式:滿足的時候輸出的內(nèi)容
例如:
<c:if test="${5>3}">
5大于3
</c:if>
2、c:forEach
使用方式
<c:forEach begin="從那里開始" end="到那里結(jié)束" step="步
長" var="給變量起個名字" varStatus="循環(huán)狀態(tài)變量">
${i }--${vs.count }<br>
</c:forEach>
例如:
<c:forEach begin="1" end="3" items="${strList}" step="1"
var="str">
${str}
<br/>
</c:forEach>
3、c:set 和 c:choose的使用(了解)
<c:set var="count" value="4"/>
<!-- 相當(dāng)于 pageContext.setAttribute("count",3) -->
<c:choose>
<c:when test="${ count ==1 }">
計(jì)數(shù)1
</c:when>
<c:when test="${ count ==2}">
計(jì)數(shù)2
</c:when>
<c:when test="${ count ==3 }">
計(jì)數(shù)3
</c:when>
<c:otherwise>
不在范圍內(nèi)
</c:otherwise>
</c:choose>
重構(gòu)需求
① 使用el結(jié)合jstl的方式,對學(xué)生信息列表進(jìn)行重構(gòu)
② 使用el對修改頁的取值進(jìn)行重構(gòu)
③ 從學(xué)生列表頁跳轉(zhuǎn)到學(xué)生添加頁,使用按鈕綁定事件的方式 來實(shí)現(xiàn)
④ 學(xué)生添加操作和學(xué)生修改操作,使用jquery的方式來提交表 單
⑤ 在學(xué)生信息列表頁擴(kuò)充修改按鈕,刪除按鈕,配合列表第一列 的復(fù)選框來實(shí)現(xiàn)跳轉(zhuǎn)到修改頁的操作和執(zhí)行刪除操作
⑥ 使用修改按鈕跳轉(zhuǎn)到修改頁
⑦ 使用刪除按鈕執(zhí)行刪除操作
⑧ 使用刪除按鈕實(shí)現(xiàn)可批量刪除操作
⑨ 批量刪除時需要注意的問題
⑩ 在列表頁上加入全選操作,列表實(shí)現(xiàn)隔行變色操作