JSP~~JSTL~~核心标签库~~循环标签forEach的使用

forEach 迭代标签:该标签使用来对一个 Collection 集合中的一系列对象进行迭代输出,并且可以指定迭代次数。

一般使用格式如下:

<c:forEach items=”collection” var=”varName” 
     [varstatus=”varStatusName”][begin=”begin”] [end=”end”] [step=”step”]>
     body content
</c:forEach>

这个标签中所使用的属性描述如下:

var:也就是保存在 Collection 集合类中的对象名称。

items:将要迭代的集合类名。

varStatus:存储迭代的状态信息,可以访问到迭代自身的信息。

begin:如果指定了 begin 值,就表示从 items[begin]开始迭代,如果没有指定 begin 值,则从集合的第一个值开始迭代。

end:表示迭代到集合的 end 位时结束,如果没有指定 end 值,则表示一直迭代中集合的最后一位。

step:指定迭代的步长。

下面看两个使用forEach的案例

<%@ page contentType="text/html;charset=GB2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
	<title>c:forEach使用示例</title>
</head>
<body>
<%
//----------设置一个数组的初始值----------
String name[] = new String[4];
name[0] = "郭晶晶";
name[1] = "张怡宁";
name[2] = "何雯娜";
name[3] = "马琳";
request.setAttribute("name", name);
%>
<!---------用forEach输出数组元素值及迭代过程中的相关属性-->
<c:forEach items="${name}" var="currentName"
	varStatus="currentVarStaus">
	当前冠军的姓名为:<c:out value="${currentName}" />;
	当前冠军索引号为:<c:out value="${currentVarStaus.index}" />;<br>
	当前共计迭代<c:out value="${currentVarStaus.count}" />次;
	<c:if test="${currentVarStaus.first}">当前是第一次迭代操作</c:if>
	<c:if test="${currentVarStaus.last}">当前是最后一次迭代操作</c:if>
	<hr>
</c:forEach>
</body>
</html>

运行显示的结果是:

当前冠军的姓名为:郭晶晶; 当前冠军索引号为:0;
当前共计迭代1次; 当前是第一次迭代操作 
--------------------------------------------------------------------------------
当前冠军的姓名为:张怡宁; 当前冠军索引号为:1;
当前共计迭代2次; 
--------------------------------------------------------------------------------
当前冠军的姓名为:何雯娜; 当前冠军索引号为:2;
当前共计迭代3次; 
--------------------------------------------------------------------------------
当前冠军的姓名为:马琳; 当前冠军索引号为:3;
当前共计迭代4次; 当前是最后一次迭代操作 
--------------------------------------------------------------------------------

第二个例子,将深入介绍bengin和end的使用

<%@ page contentType="text/html;charset=GBK" %>
<%@ page isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
  <title>JSTL: -- forEach 标签实例</title>
</head>
<body>
<h4><c:out value="forEach 实例"/></h4>
<hr>
<%
String items[] = new String[5];
items[0] = "核心标签库";
items[1] = "国际化标签库";
items[2] = "SQL 标签库";
items[3] = "XML 标签库";
items[4] = "函数标签库";
request.setAttribute("items",items);
%>
<B><c:out value="不指定 begin 和 end 的迭代:" /></B><br>
<c:forEach var="item" items="${items}">
  <c:out value="${item}"/><br>
</c:forEach>
<B><c:out value="指定 begin 和 end 的迭代:" /></B><br>
<c:forEach var="item" items="${items}" begin="1" end="3" step="1">
 <c:out value="${item}" /><br>
</c:forEach>
<B><c:out value="输出整个迭代的信息:" /></B><br>
<c:forEach var="item" items="${items}" begin="3" end="4" step="1" varStatus="s">
<c:out value="${item}" />的四种属性:<br>
所在位置,即索引:<c:out value="${s.index}" /><br>
总共已迭代的次数:<c:out value="${s.count}" /><br>
是否为第一个位置:<c:out value="${s.first}" /><br>
是否为最后一个位置:<c:out value="${s.last}" /><br>
</c:forEach>
</body>
</html>

运行测试的结果是:

forEach 实例

--------------------------------------------------------------------------------
不指定 begin 和 end 的迭代:
 核心标签库
 国际化标签库
 SQL 标签库
 XML 标签库
 函数标签库
指定 begin 和 end 的迭代:
 国际化标签库
 SQL 标签库
 XML 标签库
输出整个迭代的信息:
 XML 标签库的四种属性:
  所在位置,即索引:3
  总共已迭代的次数:1
  是否为第一个位置:true
  是否为最后一个位置:false
 函数标签库的四种属性:
  所在位置,即索引:4
  总共已迭代的次数:2
  是否为第一个位置:false
  是否为最后一个位置:true
发布了55 篇原创文章 · 获赞 27 · 访问量 2039

猜你喜欢

转载自blog.csdn.net/qq_16388171/article/details/104097808
今日推荐