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
- 大数据
- 云计算