JSTL标签库学习笔记 四、核心标签库的循环标签
2016-09-22 09:15
344 查看
循环标签
循环标签主要实现迭代操作。主要包含两个标签:<c:forEach>和<c:forTokens>标签,接下来将详细介绍这两个标签的用法。1.3.1、<c:forEach>标签
【功能】:该标签根据循环条件遍历集合(Collection)中的元素。
【语法】:
<c:forEach var=”name” items=”Collection” varStatus=”StatusName” begin=”begin” end=”end” step=”step”>
循环本体内容
</c:forEach>
【参数解析】:
(1)var设定变量名用于存储从集合中取出元素。
(2)items指定要遍历的集合。
(3)varStatus设定变量名,该变量用于存放集合中元素的信息。
(4)begin、end用于指定遍历的起始位置和终止位置(可选)。
(5)step指定循环的步长。
参数类型和相关说明见表1.3.1-1。
表1.3.1-1循环标签属性说明
名称 | EL | 类型 | 是否必须 | 默认值 |
var | N | String | 是 | 无 |
items | Y | Arrays Collection Iterator Enumeration Map String []args | 是 | 无 |
begin | Y | int | 否 | 0 |
end | Y | int | 否 | 集合中最后一个元素 |
step | Y | int | 否 | 1 |
varStatus | N | String | 否 | 无 |
表1.3.1-2 varStatus的4个状态
属性名 | 类型 | 说明 |
index | int | 当前循环的索引值 |
count | int | 循环的次数 |
frist | boolean | 是否为第一个位置 |
last | boolean | 是否为第二个位置 |
代码1.3.1.1 <c:forEach>标签使用示例:coredemo08.jsp
1 <%@ page contentType="text/html;charset=GBK" %>
2 <%@page import="java.util.List"%>
3 <%@page import="java.util.ArrayList"%>
4 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
5 <html>
6 <head>
7 <title>JSTL: -- forEach标签实例</title>
8 </head>
9 <body>
10 <h4><c:out value="forEach实例"/></h4>
11 <hr>
12 <%
13 List<String> a=new ArrayList<String>();
14 a.add("贝贝");
15 a.add("晶晶");
16 a.add("欢欢");
17 a.add("莹莹");
18 a.add("妮妮");
19 request.setAttribute("a",a);
20 %>
21 <B><c:out value="不指定begin和end的迭代:" /></B><br>
22 <c:forEach var="fuwa" items="${a}">
23 <c:out value="${fuwa}"/><br>
24 </c:forEach>
25 <B><c:out value="指定begin和end的迭代:" /></B><br>
26 <c:forEach var="fuwa" items="${a}" begin="1" end="3" step="2">
27 <c:out value="${fuwa}" /><br>
28 </c:forEach>
29 <B><c:out value="输出整个迭代的信息:" /></B><br>
30 <c:forEach var="fuwa" items="${a}" begin="3" end="4" step="1" varStatus="s">
31 <c:out value="${fuwa}" />的四种属性:<br>
32 所在位置,即索引:<c:out value="${s.index}" /><br>
33 总共已迭代的次数:<c:out value="${s.count}" /><br>
34 是否为第一个位置:<c:out value="${s.first}" /><br>
35 是否为最后一个位置:<c:out value="${s.last}" /><br>
36 </c:forEach>
37 </body>
38 </html>
【代码解析】:
(1)第13~18行通过Java脚本创建了一个集合对象a,并添加元素。
(2)第19行使用setAttribute()方法把集合存入request范围内。
(3)第22~24行未指定begin和end属性,直接从集合开始遍历到集合结束为止。
(4)第26~28行指定从集合的第二个(index值为1)元素开始,到第四个(index值为3)元素截止(index的值从0开始)。并指定step为2即每隔两个遍历一次。
(5)第30~35指定varStatus的属性名为s,并取出存储的状态信息。
【程序运行结果】:
forEach实例
不指定begin和end的迭代:
贝贝
晶晶
欢欢
莹莹
妮妮
指定begin和end的迭代:
晶晶
莹莹
输出整个迭代的信息:
莹莹的四种属性:
所在位置,即索引:3
总共已迭代的次数:1
是否为第一个位置:true
是否为最后一个位置:false
妮妮的四种属性:
所在位置,即索引:4
总共已迭代的次数:2
是否为第一个位置:false
是否为最后一个位置:true
【总结】:
(1)从程序运行结果中可以看到不使用begin和end的迭代,从集合的第一个元素开始,遍历到最后一个元素。
(2)指定begin的值为1、end的值为3、step的值为2,从第二个开始首先得到晶晶,每两个遍历一次,则下一个显示的结果为莹莹,end为3则遍历结束。
(3)从指定的begin和end的值来看遍历第四个和第五个,因得到莹莹和妮妮。相关状态信息如图所示。
提示:本例使用的list是在JSP页面中使用Java脚本创建的,是因为JSTL缺少创建集合的功能,在开发中一般不会如此,可通过访问数据库得到数据集合,和通过设定JavaBean的值得到数据集合
1.3.2、<c:forTokens>标签
【功能】:该标签用于浏览字符串,并根据指定的字符将字符串截取。
【语法】:
<c:forTokens items=”strigOfTokens” delims=””delimiters
[var=”name” begin=”begin” end=”end” step=”len” varStatus=”statusName”] >
【参数说明】
(1)items指定被迭代的字符串。
(2)delims指定使用的分隔符。
(3)var指定用来存放遍历到的成员。
(4)begin指定遍历的开始位置(int型从取值0开始)。
(5)end指定遍历结束的位置(int型,默认集合中最后一个元素)。
(6)step遍历的步长(大于0的整型)。
(7)varStatus存放遍历到的成员的状态信息。
【示例代码】:代码1.3.2实现了遍历一个有符号的字符串,把指定的符号移除。指定begin和end值,并获得遍历到的元素的状态信息。
代码1.3.2
<c:forTokens>标签的示例:coredemo09.jsp
1 <%@ page contentType="text/html;charset=GBK" %>
2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3 <html>
4 <head>
5 <title>JSTL: -- forTokens标签实例</title>
6 </head>
7 <body>
8 <h4><c:out value="forToken实例"/></h4>
9 <hr>
10 <c:forTokens items="北、京、欢、迎、您" delims="、" var="c1">
11 <c:out value="${c1}"></c:out>
12 </c:forTokens><br>
13 <c:forTokens items="123-4567-8854" delims="-" var="t">
14 <c:out value="${t}"></c:out><br>
15 </c:forTokens><br>
16 <c:forTokens items="1*2*3*4*5*6*7" delims="*" begin="1" end="3" var="n" varStatus="s">
17 <c:out value="${n}" />的四种属性:<br>
18 所在位置,即索引:<c:out value="${s.index}" /><br>
19 总共已迭代的次数:<c:out value="${s.count}" /><br>
20 是否为第一个位置:<c:out value="${s.first}" /><br>
21 是否为最后一个位置:<c:out value="${s.last}" /><br>
22 </c:forTokens>
23 </body>
24 </html>
【代码解析】:
(1)本示例共实现了3个<c:forToken>循环,10~12行第一个循环实现了遍历给定字符串“北、京、欢、迎、您”,并除去循环中遇到的“、”号。
(2)13~15行第2个循环遍历一串带有分隔符的电话号码,不读取分隔符号,将显示一个字符串。
(3)16~22行第3个循环遍历一个带“*”号的字符串,根据指定的起始位置把元素取出,并显示每个元素的状态信息。
提示:分隔符的作用是根据标识,截取字符串。如果未设定分隔符或在字符串中没有找到分隔付,将把整个元素作为一个元素截取。
在实际应用中用于在除去某些符号在页面中显示。
【程序运行结果】:
forToken实例
北 京 欢 迎 您123
4567
8854
2的四种属性:
所在位置,即索引:1
总共已迭代的次数:1
是否为第一个位置:true
是否为最后一个位置:false
3的四种属性:
所在位置,即索引:2
总共已迭代的次数:2
是否为第一个位置:false
是否为最后一个位置:false
4的四种属性:
所在位置,即索引:3
总共已迭代的次数:3
是否为第一个位置:false
是否为最后一个位置:true
<c:forToken>的属性varStatus的使用同<c:forEach>的使用方法相同,在此就再不表述。
相关文章推荐
- JSTL标签库学习笔记 四、核心标签库的循环标签
- JSTL标签库学习笔记 五、核心标签库的URL操作标签
- JSTL标签库学习笔记 二、核心标签库的表达式控制标签
- JSTL标签库学习笔记 二、核心标签库的表达式控制标签
- JSTL核心标签库学习笔记
- JSTL标签库学习笔记 五、核心标签库的URL操作标签
- Java 学习笔记13:Spring JSTL 核心标签库 使用
- Struts 1 学习笔记-3-2(JSTL核心标签库测试)
- JSTL标签库学习笔记 三、核心标签库的流程控制标签
- JSTL标签库学习笔记 三、核心标签库的流程控制标签
- JSTL标签学习笔记
- JSTL标签引入(web基础学习笔记十八)
- JSTL标签库的学习笔记
- EL表达式和JSTL标签库学习笔记
- jstl <fmt:formatNumber>标签学习笔记
- Python核心编程--学习笔记--8--条件与循环
- JSTL学习笔记2---流程控制标签
- JSTL学习笔记3-----URL相关标签的使用
- 学习笔记_用hibernateQBC动态查询+jsp的jstl标签库实现的动态查询以及分页特效
- JSTL标签库学习笔记 七、SQL标签库