`

Jstl - forEach循环

    博客分类:
  • jslt
 
阅读更多

Jstl - forEach循环  

2007-12-27 11:14:17|  分类: 技术文章 |  标签: |字号 订阅

字体变小字体变大

简单点说,<c:forEach>标签的作用就是迭代输出标签内部的内容。它既可以进行固定次数的迭代输出,也可以依据集合中对象的个数来决定迭代的次数。

         <c:forEach>标签的语法定义如下所示。

                  <c:forEach var="name" items="expression" varStatus="name"

                           begin="expression" end="expression" step="expression">

                           body content

                   </c:forEach>

         <c:forEach>标签具有以下一些属性:

l          var:迭代参数的名称。在迭代体中可以使用的变量的名称,用来表示每一个迭代变量。类型为String。

l          items:要进行迭代的集合。对于它所支持的类型将在下面进行讲解。

l          varStatus:迭代变量的名称,用来表示迭代的状态,可以访问到迭代自身的信息。

l          begin:如果指定了items,那么迭代就从items[begin]开始进行迭代;如果没有指定items,那么就从begin开始迭代。它的类型为整数。

l          end:如果指定了items,那么就在items[end]结束迭代;如果没有指定items,那么就在end结束迭代。它的类型也为整数。

l          step:迭代的步长。

         <c:forEach>标签的items属性支持Java平台所提供的所有标准集合类型。此外,您可以使用该操作来迭代数组(包括基本类型数组)中的元素。它所支持的集合类型以及迭代的元素如下所示:

l          java.util.Collection:调用iterator()来获得的元素。

l          java.util.Map:通过java.util.Map.Entry所获得的实例。

l          java.util.Iterator:迭代器元素。

l          java.util.Enumeration:枚举元素。

l          Object实例数组:数组元素。

l          基本类型值数组:经过包装的数组元素。

l          用逗号定界的String:分割后的子字符串。

l          javax.servlet.jsp.jstl.sql.Result:SQL查询所获得的行。

         不论是对整数还是对集合进行迭代,<c:forEach>的varStatus属性所起的作用相同。和var属性一样,varStatus 用于创建限定了作用域的变量(改变量只在当前标签体内起作用)。不过,由varStatus属性命名的变量并不存储当前索引值或当前元素,而是赋予 javax.servlet.jsp.jstl.core.LoopTagStatus类的实例。该类包含了一系列的特性,它们描述了迭代的当前状态,如 下这些属性的含义如下所示:

l          current:当前这次迭代的(集合中的)项。

l          index:当前这次迭代从0开始的迭代索引。

l          count:当前这次迭代从1开始的迭代计数。

l          first:用来表明当前这轮迭代是否为第一次迭代,该属性为boolean类型。

l          last:用来表明当前这轮迭代是否为最后一次迭代,该属性为boolean类型。

l          begin:begin属性的值。

l          end:end属性的值

l          step:step属性的值


 

 用于复杂判断的<c:choose><c:when><c:otherwise>标签
这三个标签用于实现复杂条件判断语句,类似“if,elseif”的条件语句。
q         <c:choose>标签没有属性,可以被认为是父标签,<c:when><c:otherwise>将作为其子标签来使用。
q         <c:when>标签等价于“if”语句,它包含一个test属性,该属性表示需要判断的条件。
q         <c:otherwise>标签没有属性,它等价于“else”语句。
下面看一个复杂条件语句的示例。
<c:choose>
         <c:when test="${paramValues.sampleValue[2] == 11}">
                   not 12 not 13,it is 11
         </c:when>
         <c:when test="${paramValues.sampleValue[2] == 12}">
                   not 11 not 13,it is 12
         </c:when>
         <c:when test="${paramValues.sampleValue[2] == 13}">
                   not 11 not 12,it is 13
         </c:when>
         <c:otherwise>
                   not 11 、12、13
         </c:otherwise>
</c:choose>
该示例将判断request请求提交的传入控件数组参数中,下标为“2”控件内容是否为“11”或“12”或“13”,并根据判断结果显示各自的语句,若都不是则显示“not 11 1213”。
 
 
<%@ page contentType=”text/html; charset=GBK” %>
<%@ page import=”java.util.*” %>

<%@ taglib uri=”http://java.sun.com/jstl/core” prefix=”c” %>
<html>
<head>
<title>JSTL测试1–c:forEach循环</title>
</head>

<body>
一、整数
<c:forEach var=”i” begin=”1″ end=”10″ step=”1″>
<c:out value=”${i}” />,
</c:forEach><p>
二、计算x的平方
<table>
<tr><th>Value</th>
<th>Square</th></tr>
<c:forEach var=”x” begin=”0″ end=”10″ step=”2″>
<tr><td><c:out value=”${x}”/></td>
<td><c:out value=”${x * x}”/></td></tr>
</c:forEach>
</table> <p>
三、字符串”47,52,53,55,46,22,16,2″ 分隔.
<table border=”1″>
<c:forTokens items=”47,52,53,55,46,22,16,2″ delims=”,” var=”dailyPrice”>
<tr><td><c:out value=”${dailyPrice}”/></td></tr>
</c:forTokens>
</table><p>
四、使用步长
<table>
<tr><th>second</th>
<th>second</th></tr>
<c:forEach var=”seconds” begin=”0″ end=”${pageContext.session.maxInactiveInterval}” step=”60″>
<tr><td><c:out value=”${seconds}”/></td>
<td><c:out value=”${seconds}”/></td></tr>
</c:forEach>
</table> <p>
五、对数组进行循环<p>
<% int ai[] = {10, 20, 30, 40, 50};
pageContext.setAttribute(”ary”, ai);
%>
<c:forEach var=”i” items=”${ary}”>
<c:out value=”${i}”/>*
</c:forEach><p>

<%
Cookie c=new Cookie(”cookie1″,”one”);
response.addCookie(c);
%>

<%
Cookie cookies[]=request.getCookies();
Cookie sCookie=null;
String sname=null;
String name=null;
if(cookies==null) // 如果没有任何cookie
out.print(”none any cookie”);
else
{
//out.print(cookies.length + “<br>”);
for(int i=0;i<cookies.length; i++) // 循环列出所有可用的Cookie
{
sCookie=cookies[i];
sname=sCookie.getName();
name = sCookie.getValue();
out.println(sname + “->” + name + “<br>”);
}
}
%>

<table border=”1″ align=”center”>
<tr><th>Cookie Name</th>
<th>Cookie Value</th></tr>
<c:forEach var=”cook” items=”${pageContext.request.cookies}”>
<tr><td><c:out value=”${cook.name}”/></td>
<td><c:out value=”${cook.value}”/></td></tr>
</c:forEach>
</table> <p>

六、字符串数组循环
<% String as[] = {
“A first string”, “La deuxieme string”, “Ella troisiemo stringo”
};
request.setAttribute(”stringArray”, as);
%><p>
<c:forEach var=”string” items=”${stringArray}”>
<c:out value=”${string}”/><br>
</c:forEach>
七、枚举
<%
Hashtable hashtable1 = new Hashtable();
pageContext.setAttribute(”numberMap”, hashtable1);

hashtable1.put(new Integer(1), “uno”);
hashtable1.put(new Integer(2), “dos”);
hashtable1.put(new Integer(3), “tres”);
hashtable1.put(new Integer(4), “cuatro”);
hashtable1.put(new Integer(5), “cinco”);
hashtable1.put(new Integer(6), “seis”);
hashtable1.put(new Integer(7), “siete”);
hashtable1.put(new Integer(8), “ocho”);
hashtable1.put(new Integer(9), “nueve”);
hashtable1.put(new Integer(10), “diez”);

java.util.Enumeration enumeration = hashtable1.keys();
pageContext.setAttribute(”enumeration”, enumeration);
%>

<c:forEach var=”item” items=”${enumeration}” begin=”2″ end=”10″ step=”2″>
<c:out value=”${item}”/><br>
</c:forEach><p>
八、map<p>
<c:forEach var=”prop” items=”${numberMap}” begin=”1″ end=”5″>
<c:out value=”${prop.key}”/> = <c:out value=”${prop.value}”/><br>
</c:forEach>



</body>
</html>
9:Vector变量
    <c:forEach  var="vect" items="${vect}" >
              <c:out value="${vect.exposalid}"/>
               <c:out value="${vect.exposalname}"/>
   </c:forEach>
 
  <c:forEach var="i"  begin="0" end="6">
             
分享到:
评论

相关推荐

    jstl标签jar包(jstl-api-1.2和jstl-impl-1.2)

    - `&lt;c:forLoop&gt;` 和 `&lt;c:forEach&gt;`:循环操作。 - `&lt;c:url&gt;` 和 `&lt;c:param&gt;`:创建URL并添加参数。 - `&lt;c:remove&gt;`:移除一个变量。 - `&lt;c:redirect&gt;` 和 `&lt;c:forward&gt;`:页面重定向和转发。 **JSTL的SQL库(sql)*...

    jakarta.servlet.jsp.jstl-api-2.0.0.jar

    例如,使用`&lt;c:forEach&gt;`标签遍历集合,而不是在JSP中嵌入Java代码进行循环,使得代码更加简洁易懂。 总之,"jakarta.servlet.jsp.jstl-api-2.0.0.jar"是Java Web开发中的一个重要组件,它提供了JSTL标准标签库的...

    jstl-api-1.2.jar jstl-impl-1.2.jar

    - **Core标签库**:提供了基本的控制结构,如`&lt;c:if&gt;`、`&lt;c:choose&gt;`、`&lt;c:forEach&gt;`等,用于条件判断和循环。 - **Format/International化标签库** (`fmt`库):支持日期、时间、数字的格式化,以及多语言国际化...

    jstl-api-1.2.jar

    例如,你可以用EL来获取Bean的属性值,然后用JSTL标签进行条件判断或循环遍历。 **使用JSTL的注意事项** 1. **引入依赖**:在Web应用的`WEB-INF/lib`目录下添加`jstl-api-1.2.jar`和对应的实现库(如`jstl-1.2.jar...

    包含jstl-api-1.2.1.jar,jstl-1.2.jar,jstl-impl-1.2.jar,standard-1.1.2.jar

    在Java Web开发中,JSTL(JavaServer...例如,使用`&lt;c:if&gt;`标签进行条件判断,`&lt;c:forEach&gt;`进行循环,`&lt;fmt:formatDate&gt;`进行日期格式化等。为了使用这些功能,需要在JSP页面顶部引入JSTL库的标签库定义,如: ```jsp ...

    jst-1.2、jstl-api-1.2、jstl-impl-1.2的jar包

    JSTL的核心标签库(core)提供了常见的控制结构,如`&lt;c:if&gt;`和`&lt;c:forEach&gt;`,用于条件判断和循环。JDBC标签库(jdbc)支持数据库操作,如查询和事务管理。XML处理标签库(fmt)则用于XML文档的解析和操作。最后,...

    jstl-1.1.0.jar和jstl-1.2.0.jar

    1. **Core(核心)库**:提供控制流程(如条件、循环)、URL操作和国际化等功能。 2. **XML库**(xml taglib):处理XML文档,如XPath查询和XML转换。 3. **Fmt(格式化)库**:提供日期、数字、货币等的格式化功能...

    jstl.jar,jstl-1.2.jar,jstl-api-1.2.jar

    **JSTL(JavaServer Pages Standard ...例如,可以使用`&lt;c:forEach&gt;`进行循环,`&lt;c:if&gt;`进行条件判断,`&lt;fmt:formatDate&gt;`格式化日期等。 ```jsp &lt;%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %&gt; ...

    Java web常用包javax.servlet.jsp.jstl-1.2.1.zip

    例如,`&lt;c:if&gt;`和`&lt;c:choose&gt;`用于条件判断,`&lt;c:forEach&gt;`用于循环遍历,`&lt;c:set&gt;`和`&lt;c:remove&gt;`用于变量的设置和移除。 2. **函数标签库(Function Tags)**:这些标签提供了一组静态方法,可以作为JSP页面上的...

    jstl-1.2.jar

    这些库提供了处理循环、条件判断、国际化、XML操作等多种功能,使得JSP代码更加简洁,可读性更强。 2. jstl-1.2.jar的核心功能 - Core库:包含基本的流程控制标签,如`&lt;c:forEach&gt;`用于迭代,`&lt;c:if&gt;`和`...

    jstl-1.1.2.jar(及源码)、standard-1.1.2.jar(及源码)

    例如,你可以用`&lt;c:forEach&gt;`进行循环,`&lt;c:if&gt;`进行条件判断等。 3. **JSTL-1.1.2-sources.jar** 这个文件提供了JSTL 1.1.2版本的源代码,开发者可以查看和学习内部实现,有助于理解和调试问题,或者自定义扩展。...

    jstl-impl-jstl-api-1.2

    1. **Core**:核心标签库,提供了基本的控制结构,如条件语句(if/else)、循环(foreach)以及重定向和转发等。 2. **Format**:格式化标签库,用于日期、时间、数字的格式化,以及国际化的支持。 3. **Function*...

    jstl-1.2.jar 和 standard-1.1.2.jar 打包下载,亲测可用

    1. **core** - 提供了基本的控制结构,如循环、条件语句、重定向和转发等。 2. **fmt** - 用于国际化和格式化,如日期、货币和数字的格式化。 3. **fn** - 内置函数库,提供了一些实用的字符串和集合操作函数。 4. *...

    jstl1.2 api--jstl-1_2-mrel2-api.zip

    但是过度依赖JSTL可能会增加内存消耗,应避免在循环中创建大量标签实例。 - **与EL的配合**:JSTL与EL(Expression Language)通常结合使用,EL用于在JSP页面中表达和计算值,而JSTL提供控制流程和数据操作。 ...

    jstl-1_1-mr2-spec.rar_JSTL_jstl-1_1-mr2-spec p_jstl-1_1-mr2-spec

    例如,使用JSTL的`&lt;c:if&gt;`和`&lt;c:forEach&gt;`标签,可以在Struts的视图层进行条件判断和循环操作,使得逻辑处理更加清晰。 **"jstl-1_1-mr2-spec.pdf"** 这个文档很可能是JSTL 1.1 MR2版本的官方规范或用户指南,详细...

    jstl-1.2.1.jar 和jstl-api-1.2.1.jar

    例如,你可以使用 `&lt;c:forEach&gt;` 进行循环遍历,`&lt;c:if&gt;` 进行条件判断,`&lt;fmt:formatDate&gt;` 对日期进行格式化等。 `jstl-api-1.2.1.jar`则是JSTL的API接口库,它定义了JSTL的接口和抽象类,是与JSTL交互时的规范。...

    javax.servlet.jsp.jstl-1.2.zip

    - **Core**: 提供基本的流程控制标签,如条件语句、循环等。 - **JDBC**: 支持数据库操作,包括查询、更新、事务管理等。 - **fmt**: 用于格式化日期、数字和消息。 - **fn**: 提供一些通用的函数,如字符串操作、...

    jstl-1.2jar下载

    4. 开始使用JSTL标签,例如使用`&lt;c:forEach&gt;`进行循环: ```jsp &lt;c:forEach items="${list}" var="item"&gt; ${item.name} &lt;/c:forEach&gt; ``` **5. JSTL与MySQL的结合** 在JSTL中,`&lt;sql&gt;`标签可以用来执行SQL...

    jstl-1.2.jar包

    它可以用来迭代数组、列表、集合、Map等数据结构,常用于表格显示或者循环操作。 4. **`&lt;c:set&gt;`**:用于设置变量。可以将一个表达式的结果赋值给一个页面、请求、会话或应用程序范围内的变量。 5. **`&lt;c:out&gt;`**...

    jstl-1.2.jar下载

    1. **标签丰富**:JSTL 1.2 包含了众多标签,如 `&lt;c:if&gt;`、`&lt;c:choose&gt;`、`&lt;c:when&gt;`、`&lt;c:otherwise&gt;` 用于条件判断,`&lt;c:forEach&gt;` 用于循环,`&lt;c:set&gt;`、`&lt;c:remove&gt;` 对变量进行设置和删除等,这些标签极大地...

Global site tag (gtag.js) - Google Analytics