forEach标签可以根据循环条件,遍历数组或集合类(List、Map、Set等等)中的所有或者部分数据。
forEach标签的属性:
items:用于指定被循环遍历的对象(一般都是域对象),该属性的值可以是数组、集合类、字符串和枚举类型;
var:用于指定循环体的变量名,该变量用于存储items指定的对象的成员;
begin:用于指定循环的起始位置,如果没有指定,则从指定对象的第一个元素(或称第0个元素)开始;
end:用于指定循环的终止位置,如果没有指定,默认迭代到集合的最后一位;
step:用于指定循环的步长,即一次循环之后跳多少个元素,不指定的话默认为1;
varStatus:用于指定循环的状态变量,该属性有4个状态属性,如下图:
实例代码如下:
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>JSTL标签的使用</title>
</head>
<body>
<%
List list=new ArrayList();
for(int i=0;i<10;i++){
list.add("str0"+i);
}
request.setAttribute("list",list);
%>
<c:forEach items="${list}" var="x" begin="0" end="10" step="2">
${x}
</c:forEach>
</body>
</html>
运行结果:
varStatus用的很少,了解即可:
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>JSTL标签的使用</title>
</head>
<body>
<%
List list=new ArrayList();
for(int i=0;i<10;i++){
list.add("str0"+i);
}
request.setAttribute("list",list);
%>
<table align="center" width="800" border="1" style="border-collapse: collapse">
<tr>
<th>元素内容</th>
<th>该元素的索引值</th>
<th>当前循环次数</th>
<th>是否是第一次循环</th>
<th>是否是最后一次循环</th>
</tr>
<c:forEach items="${list}" var="x" begin="0" end="10" step="1" varStatus="y">
<tr>
<td>${x}</td>
<td>${y.index}</td>
<td>${y.count}</td>
<td>${y.first}</td>
<td>${y.last}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
遍历map集合:
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>JSTL标签的使用</title>
</head>
<body>
<%
Map map=new HashMap();
map.put(1,"wjh");
map.put(2,"gsl");
map.put(3,"zx");
map.put(4,"lj");
request.setAttribute("map",map);
%>
<c:if test="${!empty map}"> <!-- 遍历集合前要判断是否为非空 -->
<table align="center" border="1" style="border-collapse: collapse">
<tr align="center">
<td>键</td>
<td>键值</td>
</tr>
<c:forEach items="${map}" var="x">
<tr align="center">
<td>${x.key}</td>
<td>${x.value}</td>
</tr>
</c:forEach>
</table>
</c:if>
</body>
</html>
运行结果: