forEach标签可以根据循环条件,遍历数组或集合类(List、Map、Set等等)中的所有或者部分数据。

    forEach标签的属性:
    items:用于指定被循环遍历的对象(一般都是域对象),该属性的值可以是数组、集合类、字符串和枚举类型;
    var:用于指定循环体的变量名,该变量用于存储items指定的对象的成员;
    begin:用于指定循环的起始位置,如果没有指定,则从指定对象的第一个元素(或称第0个元素)开始;
    end:用于指定循环的终止位置,如果没有指定,默认迭代到集合的最后一位;
    step:用于指定循环的步长,即一次循环之后跳多少个元素,不指定的话默认为1;
    varStatus:用于指定循环的状态变量,该属性有4个状态属性,如下图:
    image.png
    实例代码如下:

    1. <%@ page import="java.util.List" %>
    2. <%@ page import="java.util.ArrayList" %>
    3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    4. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    5. <html>
    6. <head>
    7. <title>JSTL标签的使用</title>
    8. </head>
    9. <body>
    10. <%
    11. List list=new ArrayList();
    12. for(int i=0;i<10;i++){
    13. list.add("str0"+i);
    14. }
    15. request.setAttribute("list",list);
    16. %>
    17. <c:forEach items="${list}" var="x" begin="0" end="10" step="2">
    18. ${x}&nbsp;
    19. </c:forEach>
    20. </body>
    21. </html>

    运行结果:
    image.png
    varStatus用的很少,了解即可:

    1. <%@ page import="java.util.List" %>
    2. <%@ page import="java.util.ArrayList" %>
    3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    4. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    5. <html>
    6. <head>
    7. <title>JSTL标签的使用</title>
    8. </head>
    9. <body>
    10. <%
    11. List list=new ArrayList();
    12. for(int i=0;i<10;i++){
    13. list.add("str0"+i);
    14. }
    15. request.setAttribute("list",list);
    16. %>
    17. <table align="center" width="800" border="1" style="border-collapse: collapse">
    18. <tr>
    19. <th>元素内容</th>
    20. <th>该元素的索引值</th>
    21. <th>当前循环次数</th>
    22. <th>是否是第一次循环</th>
    23. <th>是否是最后一次循环</th>
    24. </tr>
    25. <c:forEach items="${list}" var="x" begin="0" end="10" step="1" varStatus="y">
    26. <tr>
    27. <td>${x}</td>
    28. <td>${y.index}</td>
    29. <td>${y.count}</td>
    30. <td>${y.first}</td>
    31. <td>${y.last}</td>
    32. </tr>
    33. </c:forEach>
    34. </table>
    35. </body>
    36. </html>

    image.png
    遍历map集合:

    1. <%@ page import="java.util.List" %>
    2. <%@ page import="java.util.ArrayList" %>
    3. <%@ page import="java.util.Map" %>
    4. <%@ page import="java.util.HashMap" %>
    5. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    6. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    7. <html>
    8. <head>
    9. <title>JSTL标签的使用</title>
    10. </head>
    11. <body>
    12. <%
    13. Map map=new HashMap();
    14. map.put(1,"wjh");
    15. map.put(2,"gsl");
    16. map.put(3,"zx");
    17. map.put(4,"lj");
    18. request.setAttribute("map",map);
    19. %>
    20. <c:if test="${!empty map}"> <!-- 遍历集合前要判断是否为非空 -->
    21. <table align="center" border="1" style="border-collapse: collapse">
    22. <tr align="center">
    23. <td>键</td>
    24. <td>键值</td>
    25. </tr>
    26. <c:forEach items="${map}" var="x">
    27. <tr align="center">
    28. <td>${x.key}</td>
    29. <td>${x.value}</td>
    30. </tr>
    31. </c:forEach>
    32. </table>
    33. </c:if>
    34. </body>
    35. </html>

    运行结果:
    image.png