JSTL之迭代標(biāo)簽庫(kù)
------- android培訓(xùn)、java培訓(xùn)、期待與您交流! ----------
JSTL的全稱(chēng)是 Java Server Pages Standard Tag Library,翻譯過(guò)來(lái)就是jsp標(biāo)準(zhǔn)標(biāo)簽庫(kù),它包含了在開(kāi)發(fā)JSP頁(yè)面時(shí)經(jīng)常用到的一組標(biāo)準(zhǔn)標(biāo)簽。這些標(biāo)簽提供了一種不用嵌入Java代碼就可以開(kāi)發(fā)復(fù)雜的JSP頁(yè)面的方法。
在JSTL中一共有5大類(lèi)標(biāo)簽庫(kù),其中有一個(gè)重要的核心標(biāo)簽庫(kù),而核心標(biāo)簽庫(kù)根據(jù)功能不同又分為通用標(biāo)簽庫(kù)、條件標(biāo)簽庫(kù)、迭代標(biāo)簽庫(kù),今天我們要說(shuō)的就是其中的迭代標(biāo)簽庫(kù)。
在JSP的開(kāi)發(fā)中,我們經(jīng)常需要對(duì)集合對(duì)象進(jìn)行迭代操作。例如,列表顯示查詢(xún)結(jié)果等,以往通常使用java代碼實(shí)現(xiàn)集合對(duì)象的遍歷,如List,Iterator等。現(xiàn)在我們所說(shuō)的JSTL的迭代標(biāo)簽可以在很大程度上簡(jiǎn)化迭代操作。
<c:forEach>標(biāo)簽有兩種語(yǔ)法格式,一種用于遍歷集合對(duì)象的成員,另一種用于使語(yǔ)句循環(huán)執(zhí)行指定的次數(shù),下面我們來(lái)一一列舉。
1.遍歷集合對(duì)象的成員
<c:forEach var="varName" items="collectionName" varStatus="varStatuwsName" begin="beginIndex" end="endIndex" step="step">顯示內(nèi)容</c:forEach>
上面就是一個(gè)forEach標(biāo)簽的基本語(yǔ)法格式,其中var屬性是代表當(dāng)前遍歷的成員,items是指被迭代的集合對(duì)象,varStatus屬性用于存放var引用的成員的相關(guān)信息,如索引等,begin表示開(kāi)始的位置,默認(rèn)為0,end表示結(jié)束為止,step表示循環(huán)的步長(zhǎng),默認(rèn)為1。好了,現(xiàn)在我們已經(jīng)知道了他的基本語(yǔ)法和各屬性的作用,那么把他帶入到程序中是怎樣的呢?下面就用一個(gè)簡(jiǎn)單的Demo來(lái)個(gè)大家一個(gè)直觀(guān)的呈現(xiàn):
<% List<String> list = new ArrayList<String>(); list.add("小明"); list.add("小紅"); list.add("小剛"); request.setAttribute("list",list); %> <c:forEach var="varName" items="${list}" varStatus="varStatusName"> ${varName} </c:forEach>這樣就實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的迭代效果,一般JSTL標(biāo)簽要和EL表達(dá)式聯(lián)用,這樣就可以簡(jiǎn)便的獲取和輸出數(shù)據(jù)。大家也看到了,這樣直接遍歷循環(huán)對(duì)象很簡(jiǎn)單,那么我們繼續(xù)看他的下一種語(yǔ)法格式,也就是指定語(yǔ)句的執(zhí)行次數(shù)。
2.指定語(yǔ)句的執(zhí)行次數(shù):
<c:forEach var="varName" varStatus="varStatuwsName" begin="beginIndex" end="endIndex" step="step">顯示內(nèi)容</c:forEach>
是不是看起來(lái)很熟悉呢,他的語(yǔ)法和上面沒(méi)有太大不同,區(qū)別就是格式2不是對(duì)一個(gè)集合對(duì)象遍歷,而是根據(jù)制定的begin屬性,end屬性以及step屬性執(zhí)行主體內(nèi)容固定的次數(shù)。這種方法在實(shí)際開(kāi)發(fā)中非常廣泛,在很多開(kāi)發(fā)中都要顯示列表,報(bào)表,下面我們就用一個(gè)人員列表隔行變色的核心代碼來(lái)演示他的效果:
<table style="border:1px solid blue; width: 400px;"> <tr style="font-weight: bold; "> <td>姓名</td><td>職位</td><td>年齡</td> </tr> <!--在servlet頁(yè)面已經(jīng)加進(jìn)去一個(gè)集合--> <c:forEach var="varName" items="${list}" varStatus="status"> <tr <c:if test="${status.index%2==0}">style="background-color: pink"</c:if></tr> <td>${varName.name}</td><td>${varName.job}</td><td>${varName.age}</td> </tr> </c:forEach> </table>這樣就有了一個(gè)好看的隔行變色效果:

是不是很好用呢?如果要用jquery或是HTML代碼實(shí)現(xiàn)這種和數(shù)據(jù)庫(kù)連接的樣式會(huì)非常麻煩,使用JSTL標(biāo)簽讓代碼變得簡(jiǎn)便,并且其中的條件標(biāo)簽可以讓代碼多出更多的變化。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注