叠代操作-->c:forEach和c:forTokens
jstl--->Core 核心標簽庫-->c:forEach
在頁面上遍歷後臺傳到前臺的數據是最基本的最常用的方法 主要包含兩種叠代操作:forEach和forTokens
語法1:叠代集合所有事物
<c:forEach [var="varName"] items="collection" [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]> </c:forEach>
語法2:叠代指定的次數
<c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin" end="end" [step="step"]> </c:forEach>
屬性:
var ---> 存放當前成員
items ---> 被叠代的集合
varStatus ---> 存放當前對象相關咨詢
begin ---> 開始的位置
end ---> 結束的位置
step --->每次叠代的間隔數
舉個栗子:
1、循環遍歷,輸出所有的元素。
<c:foreach items="${list}" var="li">
${li}
</c:foreach>
--->items 用於接收集合對象,var 定義對象接收從集合裏遍歷出的每一個元素。同時其會自動轉型。
2、循環遍歷,輸出一個範圍類的元素。 <c:foreach items ="${lis}" var = "li " begin="2" end ="12"> ${li} </c:foreach>
--->begin 定義遍歷的開始位置,end定義遍歷的結束位置。begin 和end的引號必須寫。
3、循環遍歷,輸出除某個元素以外的元素或輸出指定元素。
<c:foreach items="${list}" var ="li" varStatus="status"> <c:if text="${status.count==1}> ${"第一個元素不要"} </c:if> ${li} </ c:foreach>
--->varStatus 表示當前集合的狀態,count為循環一個計算器。
4、循環遍歷,輸出第一個或最後一個元素。
<c:foreach items="${list}" var ="li" varStatus="status">
<c:if text="${status.first}">我是第一個元素</c:if>
c:if text="${status.last}">我是最後一個元素</c:if>
</c:foreach>
--->first表示如果是一個元素,則返回ture,反之則返回false last 表示如果是最後一個元素,則返回ture,反之則返回false。
5、循環遍歷,按指定步長輸出。
<c:forEach items="${atts}" var="item" begin="1" end="4" step="2" > ${item}</br> </c:forEach>
-->表示從集合1-4每隔2個打印出來(1,3);
<c:forEach items="${atts}" var="item" begin="4" end="10" step="4" > ${item}</br> </c:forEach>
-->表示從集合4-10每隔4個打印出來(4,8);
註:c:forEach並不只是用來瀏覽集合而已,items並不是一定要有的屬性,但是當沒有使用items時就必須要有 begin和end兩個屬性,
舉個栗子: <c:forEach begin="1" end="10" var="item" > ${item}</br> </c:forEach>
只有設定begin和end值它既變成一個簡單的集合,他將1-10賦值給item
varStatus ---> 他有四個屬性:
index:當前成員的索引
count:但目前為止當前成員的總數
first:當前成員是否是第一個
last:當前成員是否是最後一個
例: <c:forEach items="${atts}" var="item" varStatus="s"> <h2><c:out value="${item}"/> </h2> index ${s.index}</br> count ${s.count}</br> first ${s.first}</br> last ${s.last}</br> </c:forEach>
jstl--->Core 核心標簽庫-->c:forTokens>
用來瀏覽一組字符串的所有成員,由定義符號(delimiters)所分割
語法: <c:forTokens items="stringOfTokens" delims="delimiters" [var="varName"] [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]> </c:forTokens>
屬性:
var: 存放當前知道的成員
items: 被叠代的字符串
delims: 定義用來分割字串的字元
varsttus: 存放當前對象相關咨詢
begin: 開始的位置
end: 結束的位置
step: 每次叠代的間隔數
-->與forEach的區別在於items和delims這兩個屬性,items必須為字符串,而delims作為分隔符
舉幾個栗子:
<c:forTokens items="A,B,C,D,E" delims="," var="item" > ${item} </c:forTokens>
頁面會輸出ABCDE,也就是說字符串被","分割為五部分,並執行了五次輪換,但是逗號沒有別打印出來
<c:forEach items="A,B,C,D,E" var="item" > ${item} </c:forEach>
然而我們用c:forEach也能達到目的,區別在於c:Tokens的delims不止能指定一種字元來分割,可以有多種
<c:forTokens items="A,B;C-D,E" delims=",;-" var="item" > ${item} </c:forTokens>
用了三種分割符,所以如果使用c:forTokens來分割字符串,功能和彈性會比c:forEach來的較大
叠代操作-->c:forEach和c:forTokens