JSTL之迭代標簽庫
JSTL的全稱是 Java Server Pages Standard Tag Library,翻譯過來就是JSP標准標簽庫,它包含了在開發JSP頁面時經常用到的一組標准標簽。這些標簽提供了一種不用嵌入Java代碼就可以開發復雜的JSP頁面的方法。
在JSTL中一共有5大類標簽庫,其中有一個重要的核心標簽庫,而核心標簽庫根據功能不同又分為通用標簽庫、條件標簽庫、迭代標簽庫,今天我們要說的就是其中的迭代標簽庫。
在JSP的開發中,我們經常需要對集合對象進行迭代操作。例如,列表顯示查詢結果等,以往通常使用java代碼實現集合對象的遍歷,如List,Iterator等。現在我們所說的JSTL的迭代標簽可以在很大程度上簡化迭代操作。
<c:forEach>標簽有兩種語法格式,一種用於遍歷集合對象的成員,另一種用於使語句循環執行指定的次數,下面我們來一一列舉。
1.遍歷集合對象的成員
<c:forEach var="varName" items="collectionName" varStatus="varStatuwsName" begin="beginIndex" end="endIndex" step="step">顯示內容</c:forEach>
上面就是一個forEach標簽的基本語法格式,其中var屬性是代表當前遍歷的成員,items是指被迭代的集合對象,varStatus屬性用於存放var引用的成員的相關信息,如索引等,begin表示開始的位置,默認為0,end表示結束為止,step表示循環的步長,默認為1。好了,現在我們已經知道了他的基本語法和各屬性的作用,那么把他帶入到程序中是怎樣的呢?下面就用一個簡單的Demo來個大家一個直觀的呈現:
<% 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>
這樣就實現了一個簡單的迭代效果,一般JSTL標簽要和EL表達式聯用,這樣就可以簡便的獲取和輸出數據。大家也看到了,這樣直接遍歷循環對象很簡單,那么我們繼續看他的下一種語法格式,也就是指定語句的執行次數。
2.指定語句的執行次數:
<c:forEach var="varName" varStatus="varStatuwsName" begin="beginIndex" end="endIndex" step="step">顯示內容</c:forEach>
是不是看起來很熟悉呢,他的語法和上面沒有太大不同,區別就是格式2不是對一個集合對象遍歷,而是根據制定的begin屬性,end屬性以及step屬性執行主體內容固定的次數。這種方法在實際開發中非常廣泛,在很多開發中都要顯示列表,報表,下面我們就用一個人員列表隔行變色的核心代碼來演示他的效果:
<table style="border:1px solid blue; width: 400px;"> <tr style="font-weight: bold; "> <td>姓名</td><td>職位</td><td>年齡</td> </tr> <!--在servlet頁面已經加進去一個集合--> <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>
這樣就有了一個好看的隔行變色效果:

是不是很好用呢?如果要用jquery或是HTML代碼實現這種和數據庫連接的樣式會非常麻煩,使用JSTL標簽讓代碼變得簡便,並且其中的條件標簽可以讓代碼多出更多的變化。
