<c:forEach> 标签可以根据循环条件遍历数组和集合类中的所有或部分数据。例如,在使用 Hibernate 技术访问数据库时,返回的都是数组、java.util.List 和 java.util.Map 对象,它们封装着从数据库中查询得出的数据,这些数据是 JSP 页面需要的。如果在 JSP 页面中使用 Java 代码来循环遍历所有数据,会使页面非常混乱,不易分析和维护。使用 JSTL 的 <c:forEach> 标签循环显示这些数据可以解决 JSP 页面混乱的问题,同时也提高了代码的可维护性。
语法:
<c:forEach> 标签中的属性都是可选项,可以根据需要使用相应的属性。<c:forEach> 标签各属性的详细介绍如表所示。
属性 | 类型 | 描述 | 引用 EL |
---|---|---|---|
items | 数组、集合类、字符串和枚举类型 | 被循环遍历的对象,多用于数组与集合类 | 可以 |
var | String | 循环体的变量,用于存储items指定对象的成员 | 不可以 |
begin | int | 循环的起始位置 | 可以 |
end | int | 循环的终止位置 | 可以 |
step | int | 循环的步长 | 可以 |
varStatus | String | 循环的状态变量 | 不可以 |
在上表的属性中,varStatus 属性又包括下表所示的 4 个当前循环体的状态属性。
属性 | 类型 | 说明 |
---|---|---|
index | int | 当前循环的索引值 |
count | int | 循环总数 |
first | boolean | 是否为第一循环 |
last | boolean | 是否为最后一次循环 |
应用 <c:forEach> 标签遍历一个 java.util.List 集合对象,并将其显示在 JSP 页面中,关键代码如下:
<%@page import="java.util.*"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
List<String>list = new ArrayList<String>(); //添加集合元素
list.add("表达式标签");
list.add("流程控制标签");
list.add("循环标签");
list.add("URL操作");
request.setAttribute("data",list);
%>
List集合类中包含了JSTL核心标签库的4种标签名。<br>
利用&lt;c:forEach&gt;标签遍历其结果如下:
<br>
<c:forEach items="${data}" var="tag" varStatus="id">
${id.count}&nbsp;${tag}<br>
</c:forEach>
运行结果如下:
List集合类中包含了JSTL标签库的4种签名。
利用<c:forEach>标签遍历其结果如下:
1 表达式标签
2 流程控制标签
3 循环标签
4 URL操作
本示例使用 JSTL 标签中的 <c:forEach> 标签遍历 List 集合中的元素,代码如下:
<body>
<%
List<String>list = new ArrayList<String>(); //创建List集合对象
list.add("松下问童子"); //添加List中的元素
list.add("言师采药去");
list.add("只在此山中");
list.add("云深不知处");
request.setAttribute("list",list); //将List集合保存到request对象中
%>
<table align="center" cellpadding="0" cellspacing="0" border="2" bgcolor="lightblue">
<Tr>
<Td><b>遍历List集合的全部元素:</b><br>
<c:forEach items="${requestScope.list}" var="keyvalue" varStatus="id">
${id.index}&nbsp;${keyvalue}<br>
</c:forEach>
</Td>
</Tr>
<Tr>
<td><b>遍历List中所有的元素输出第一个和最后一句:</b><br>
<c:forEach items="${requestScope.list}" var="keyvalue" varStatus="id" begin="0" step="3">
${id.index}&nbsp;${keyvalue}<br>
</c:forEach>
</td>
</Tr>
</table>
运行结果如下:
遍历List集合的全部元素:
0 松下问童子
1 言师采药去
2 旨在从山中
3 云深不知去
遍历List中所有的元素输出第一句和最后一句:
0 松下问童子
3 云深不知去