forEach标签有6个属性,分别是:items,var、begin、end、step、varStatus
items:需要遍历的集合或数组
var:当遍历到每一个元素时,forEach标签会以var的值为key,当前迭代元素的值为value,将key-value写入到page域
begin:从下标为begin的元素开始迭代(下标默认从0开始)
end:一直迭代到下标为end的元素(下标默认从0开始)
step:每输出一个元素后,跳过step-1个元素再进行输出
varStatus:通过varStatus,我们可以获取当前forEach的状态信息,后面会详细介绍这个属性

我们先来看看items属性和var属性怎么用

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="java.util.*" %>
<html>
<head><title>Title</title>
</head>
<body><%--forEach遍历List--%><%List list = new ArrayList();list.add("one");list.add("two");list.add("three");pageContext.setAttribute("list",list);%><c:forEach items="${list}" var="name" >${name}</c:forEach><%--forEach遍历Set--%><%Set set = new HashSet();set.add("one");set.add("two");set.add("three");pageContext.setAttribute("set",set);%><c:forEach items="${set}" var="name">${name}  <br/></c:forEach><%--forEach遍历Map--%><%Map map = new HashMap();map.put("username","zhangsan");map.put("age",20);map.put("address","湖南长沙");pageContext.setAttribute("map",map);%><c:forEach items="${map}" var="name" >${name.key} = ${name.value} <br/></c:forEach><%--forEach遍历基本类型数组--%><%int[] arr = {1,2,3};pageContext.setAttribute("arr",arr);%><c:forEach items="${arr}" var="name">${name} <br/></c:forEach><%--forEach遍历包装类数组--%><%Double[] doubleArr = {1.0,2.0,3.0};pageContext.setAttribute("doubleArr",doubleArr);%><c:forEach items="${doubleArr}" var="name" >${name} <br/></c:forEach>
</body>
</html>

下面代码证明了,无论从什么域中获取到集合或数组,每一次循环时,都会以var的值为key,以当前迭代的元素为value,将key-value加入到page域中

    <%List list = new ArrayList();list.add("one");list.add("two");list.add("three");//pageContext.setAttribute("list",list);request.setAttribute("list",list);//session.setAttribute("list",list);//application.setAttribute("list",list);%><c:forEach items="${list}" var="name">pageScope = ${pageScope.name}   <br/>requestScope = ${requestScope.name}    <br/>sessionScope = ${sessionScope.name}    <br/>applicationScope = ${applicationScope.name}    <br/>-------------------------<br/>-------------------------<br/></c:forEach>

介绍一下forEach标签的begin和end属性

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="java.util.*" %>
<html>
<head><title>Title</title>
</head>
<body><%List list = new ArrayList();list.add("one");list.add("two");list.add("three");list.add("four");list.add("five");list.add("six");list.add("seven");list.add("eight");list.add("nine");pageContext.setAttribute("list",list);%><%--从下标为3的元素开始迭代--%><c:forEach items="${list}" var="name" begin="3" >${name} <br/></c:forEach>-------------------------------------------------<br/>-------------------------------------------------<br/><%--一直迭代到下标为6的元素--%><c:forEach items="${list}" var="name" end="6">${name} <br/></c:forEach>-------------------------------------------------<br/>-------------------------------------------------<br/><%--当然了,begin和end也可以同时使用--%><c:forEach items="${list}" var="name" begin="2" end="5">${name} <br/></c:forEach></body>
</html>

对于begin和end还有一个小操作

<c:forEach begin="1" end="10" var="num">${num}
</c:forEach>

下面再说说step属性

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="java.util.*" %>
<html>
<head><title>Title</title>
</head>
<body><%List list = new ArrayList();list.add("one");list.add("two");list.add("three");list.add("four");list.add("five");list.add("six");list.add("seven");list.add("eight");list.add("nine");pageContext.setAttribute("list",list);%><c:forEach items="${list}" var="name" step="2">${name} <br/></c:forEach><c:forEach begin="1" end="10" var="num">${num}</c:forEach></body>
</html>

one two three four five six seven eight nine
每隔step-1=2-1=1个元素进行输出
那么输出的结果为:one three five seven nine

下面我们利用forEach展示一个User表格
先创建一个User类

package entity;public class User {private String userName;private Integer age;private String address;public User() {}public User(String userName, Integer age, String address) {this.userName = userName;this.age = age;this.address = address;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}@Overridepublic String toString() {return "User{" +"userName='" + userName + '\'' +", age=" + age +", address='" + address + '\'' +'}';}
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="java.util.*" %>
<%@ page import="entity.User" %>
<html>
<head><title>Title</title><style>#userTable{width:600px;margin: 0 auto;margin-top: 50px;border-spacing: 0px;border-collapse: collapse;text-align: center;}#userTable>tr,th,td{border:1px solid black;}</style>
</head>
<body><%List<User> users = new ArrayList();users.add(new User("张三",20,"湖南"));users.add(new User("李四",21,"湖北"));users.add(new User("王五",22,"北京"));users.add(new User("赵六",22,"上海"));users.add(new User("孙七",23,"山东"));users.add(new User("周八",24,"安徽"));users.add(new User("吴九",25,"四川"));users.add(new User("郑十",26,"浙江"));pageContext.setAttribute("users",users);%><table id="userTable"><tr><th>编号</th><th>姓名</th><th>年龄</th><th>地址</th></tr><c:forEach items="${users}" var="user" varStatus="vs" ><tr><td>${vs.count}</td><td>${user.userName}</td><td>${user.age}</td><td>${user.address}</td></tr></c:forEach></table>
</body>
</html>

最后再介绍一下varStatus这个属性,varStatus其实是一个类,该对类有如下属性

属性 说明
index 当前元素的索引,从0开始
index 当前元素的序号,从1开始
first 当前元素是否为首元素,返回的是一个boolean值
last 当前元素是否为末尾元素 ,返回的是一个boolean值
begin 返回当前forEach标签的begin值,若没有设置begin属性,返回null
end 返回当前forEach标签的end值,若没有设置end属性,返回null
step 返回当前forEach标签的step值,若没有设置step属性,返回null
current 使用current就是调用当前元素的toString()
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="java.util.*" %>
<%@ page import="entity.User" %>
<html>
<head><title>Title</title><style>#userTable{width:600px;margin: 0 auto;margin-top: 50px;border-spacing: 0px;border-collapse: collapse;text-align: center;}#userTable>tr,th,td{border:1px solid black;}</style>
</head>
<body><%List<User> users = new ArrayList();users.add(new User("张三",20,"湖南"));users.add(new User("李四",21,"湖北"));users.add(new User("王五",22,"北京"));users.add(new User("赵六",22,"上海"));users.add(new User("孙七",23,"山东"));users.add(new User("周八",24,"安徽"));users.add(new User("吴九",25,"四川"));users.add(new User("郑十",26,"浙江"));pageContext.setAttribute("users",users);%><table id="userTable"><tr><th>index</th><th>count</th><th>first</th><th>last</th><th>begin</th><th>end</th><th>first</th><th>last</th><th>step</th><th>current</th></tr><c:forEach items="${users}" var="user" varStatus="vs" begin="0" step="1" ><tr><td>${vs.index}</td><td>${vs.count}</td><td>${vs.first}</td><td>${vs.last}</td><td>${vs.begin}</td><td>${vs.end==null?'yes':'no'}</td><td>${vs.first}</td><td>${vs.last}</td><td>${vs.step}</td><td>${vs.current}</td></tr></c:forEach></table>
</body>
</html>

下面用varStatus的count对表格的颜色做一下调整
单行使用一种颜色
双行使用另一种颜色

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="java.util.*" %>
<%@ page import="entity.User" %>
<html>
<head><title>Title</title><style>#userTable{width:600px;margin: 0 auto;margin-top: 50px;border-spacing: 0px;border-collapse: collapse;text-align: center;}#userTable>tr,th,td{border:1px solid black;}.odd {background-color: rgba(255,0,0,0.1);}.even {background-color: rgba(255,0,255,0.1);}</style>
</head>
<body><%List<User> users = new ArrayList();users.add(new User("张三",20,"湖南"));users.add(new User("李四",21,"湖北"));users.add(new User("王五",22,"北京"));users.add(new User("赵六",22,"上海"));users.add(new User("孙七",23,"山东"));users.add(new User("周八",24,"安徽"));users.add(new User("吴九",25,"四川"));users.add(new User("郑十",26,"浙江"));pageContext.setAttribute("users",users);%><table id="userTable"><tr><th>序号</th><th>姓名</th><th>年龄</th><th>地址</th></tr><c:forEach items="${users}" var="user" varStatus="vs" ><tr class="${vs.count%2==0?'odd':'even'}"><td>${vs.count}</td><td>${user.userName}</td><td>${user.age}</td><td>${user.address}</td></tr></c:forEach></table>
</body>
</html>

JSP之forEach标签相关推荐

  1. jsp的jstl的foreach标签

    jsp支持丰富的jstl标签语言(需要jar包支持),其中list循环(迭代)用的是<c:forEach></c:forEach>标签. 这个标签的作用就是迭代输出标签内部的内 ...

  2. JSP→JSTL标准标签库简介与环境搭建、JSTL助手EL表达式EL隐式对象、标签→out、set、if、多选择配合、foreach、redirect、格式化、JSTL函数标签、自定义标签、标签类架构

    JSTL标准标签库简介与环境搭建 EL表达式与EL隐式对象 out标签 set标签 remove标签 catch标签 if标签 choose.when.otherwise配合标签 foreach标签 ...

  3. JSP页面通过c:forEach标签循环遍历List集合

    <c:forEach>标签有如下属性: 属性 描述 是否必要 默认值 items 要被循环的信息 否 无 begin 开始的元素(0=第一个元素,1=第二个元素) 否 0 end 最后一个 ...

  4. JSP标签:jsp内置标签、jstl标签、自定义标签

     一.jsp标签的分类: 1)内置标签(动作标签): 不需要在jsp页面导入标签 2)jstl标签: 需要在jsp页面中导入标签 3)自定义标签 : 开发者自行定义,需要在jsp页面导入标签    1 ...

  5. 关于jsp中jstl-core标签循环遍历的使用

    JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签. 除了这些,它还提供 ...

  6. jsp导入jstl标签库_EE JSP:使用JSTL标记库生成动态内容

    jsp导入jstl标签库 除了在JSP中编写自己的定制标记之外,您还将发现Java EE实际上提供了一组Java标准标记库(JSTL)供您使用. 这些内置标签包括重复(for-loop)标签,条件标签 ...

  7. [jstl] forEach标签使用

     在JSP的开发中,迭代是经常要使用到的操作.例如,逐行的显示查询的结果等.在早期的JSP中,通常使用Scriptlets来实现Iterator或者Enumeration对象的迭代输出.现在,通过JS ...

  8. 学会怎样使用Jsp 内置标签、jstl标签库及自定义标签

    学习jsp不得不学习jsp标签,一般来说,对于一个jsp开发者,可以理解为jsp页面中出现的java代码越少,对jsp的掌握就越好,而替换掉java代码的重要方式就是使用jsp标签.  jsp标签的分 ...

  9. jsp中c标签的详细使用

    jsp中c标签的使用 JSLT标签库,是日常开发经常使用的,也是众多标签中性能最好的.把常用的内容,放在这里备份一份,随用随查.尽量做到不用查,就可以随手就可以写出来.这算是Java程序员的基本功吧, ...

最新文章

  1. Python的常见几道数学运算题
  2. linux内核 DebugFS
  3. SAP HR 常用事务代码
  4. 腾讯微博虽然停运,但其仍是一款成功的产品
  5. Visual Studio 调试器---Visual Studio 调试器
  6. Excel中PMT计算月供函数的java实现
  7. Java基础学习总结(29)——浅谈Java中的Set、List、Map的区别
  8. es6 for(var item of list)
  9. 计算机考研英语一和英语二的区别,2018考研英语一与英语二翻译有什么区别?怎么提高?...
  10. JPL星历文件de405下载方法
  11. kmeans-用户分层
  12. JS正则表达式判断邮箱格式是否正确
  13. 修改传奇私服服务器,传奇SF 肿么修改服务器时间
  14. Cris 学 SpringMVC(二):使用 servlet 原生 api 作为方法入参
  15. Python内置函数 vars()函数
  16. PlantSimulation 基本事件控制
  17. Echarts中国地图背景颜色渐变
  18. 07 Linux操作系统相关知识
  19. 类加载、反射、注解、动态代理(JDK)
  20. iso 2631 matlab,声学基础及其分析软件 - 声振论坛 - 振动,动力学,声学,信号处理,故障诊断 - Powered by Discuz!...

热门文章

  1. 数据库连接失败:java.lang.RuntimeException: com.mysql.cj.exceptions.InvalidConnectionAttributeException
  2. MySQL角色(role)功能介绍
  3. 关闭AcceptEx缓冲区导致延迟增加问题
  4. 算法题常用技巧C++
  5. SMART:蛋白质结构域数据库
  6. LXC简单介绍与使用
  7. 数字基带传输系统设计
  8. solidwork装配体导入到Adams中出现多个Part重名和Part丢失的情况处理
  9. Lawmakers Bill Taxpayers For TVs, Cameras, Lexus
  10. 负载测试和压力测试的区别