JSP JSTL <c:forEach>标签:对对象进行迭代输出标签
<c:forEach> 标签可以根据循环条件遍历数组和集合类中的所有或部分数据。例如,在使用 Hibernate 技术访问数据库时,返回的都是数组、java.util.List 和 java.util.Map 对象,它们封装着从数据库中查询得出的数据,这些数据是 JSP 页面需要的。如果在 JSP 页面中使用 Java 代码来循环遍历所有数据,会使页面非常混乱,不易分析和维护。使用 JSTL 的 <c:forEach> 标签循环显示这些数据可以解决 JSP 页面混乱的问题,同时也提高了代码的可维护性。
语法:
在上表的属性中,varStatus 属性又包括下表所示的 4 个当前循环体的状态属性。
应用 <c:forEach> 标签遍历一个 java.util.List 集合对象,并将其显示在 JSP 页面中,关键代码如下:
List集合类中包含了JSTL标签库的4种签名。
利用<c:forEach>标签遍历其结果如下:
1 表达式标签
2 流程控制标签
3 循环标签
4 URL操作
遍历List集合的全部元素:
0 松下问童子
1 言师采药去
2 旨在从山中
3 云深不知去
遍历List中所有的元素输出第一句和最后一句:
0 松下问童子
3 云深不知去
语法:
<c:forEach items="data" var="name" begin="start" end="finish" step="step" varStatus="statusName">
……标签体
</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 云深不知去
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算