jsp页面循环集合操作整理

第一种:struts1.2循环遍历元素,name是结果集。引用标签库<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<logic:iterate>主要用来处理在页面上输出集合类,集合一般来说是下列之一:
1、 java对象的数组
2、 ArrayList、Vector、HashMap等
例:


代码如下:

<logic:iterate id="a" name="list" type=" example.User ">
<tr><td width="50%">
name: <bean:write name="a" property="name"/>
<td/><td width="50%">
password: <bean:write name="a" property="password"/>
</td></tr>
</logic:iterate>

iterate标记
id 脚本变量的名称,它保存着集合中当前元素的句柄。
name 代表了你需要叠代的集合,来自session或者request的属性。
type 是其中的集合类元素的类型
bean 的write标记是用来将属性输出的,name用来匹配iterate的id,property用来匹配相应类的属 性<logic:iterate>用法详解22007-04-04 20:34<login:iterate>标记用于在页面中创建一个循环,以此来遍历如数组、Collection、Map这样的对象。该标 记的功能强大,在Struts应用的页面中经常使用到。

1、对数组进行循环遍历
使用<logic:iterate>标记可以用于遍历数组,以下是一段示例代码:
程序代码


代码如下:

<%
String[] testArray={"str1","str2","str3"};
pageContext.setAttribute("test",testArray);
%>
<logic:iterate id="show" name="test">
<bean:write name="show"/>
</logic:iterate>

在上面的代码中,首先定义了一个字符串数组,并为其初始化。接着,将该数组存入pageContext对象中,命名为test1。然后使 用<logic:iterate>标记的name属性指定了该数组,并使用id来引用它,同时使用<bean:write>标记 来将其显示出来。其结果为:
str1
str2
str3
另外,还可以通过length属性来指定输出元素的个数。如下面的代码:
程序代码<logic:iterate id="show" name="test" length="2" offset="1">
<bean:write name="show"/>
</logic:iterate>
其中length属性指定了输出元素的个数,offset属性指定了从第几个元素开始输出,如此处为1,则表示从第二个元素开始输出。所以该代码的运行结果应当输出:
str2
str3
另外,该标记还有一个indexId属性,它指定一个变量存放当前集合中正被访问的元素的序号,如:
程序代码


代码如下:

<logic:iterate id="show" name="test" length="2" offset="1" indexId="number">
<bean:write name="number"/>:<bean:write name="show"/>
</logic:iterate>

其显示结果为:
1:str2
2:str3

2、对HashMap进行循环遍历
程序代码


代码如下:

<span style="color:#FF6600;"><span style="background-color: rgb(255, 153, 102);"><span style="background-color: rgb(255, 255, 255);"><%
HashMap countries=new HashMap();
countries.put("country1","中国");
countries.put("country2","美国");
countries.put("country3","英国");
countries.put("country4","法国");
countries.put("country5","德国");
pageContext.setAttribute("countries",countries);
%>
<logic:iterate id="country" name="countries">
<bean:write name="country" property="key"/>:
<bean:write name="country" property="value"/>
</logic:iterate>
在bean:write中通过property的key和value分别获得HaspMap对象的键和值。其显示结果为:
country5:德国
country3:英国
country2:美国
country4:法国
country1:中国</span> </span></span>

由结果可看出,它并未按添加的顺序将其显示出来。这是因为HaspMap是无序存放的。

3、嵌套遍历
程序代码


代码如下:

<span style="color:#CC6600;"><%
String[] colors={"red","green","blue"};
String[] countries1={"中国","美国","法国"};
String[] persons={"乔丹","布什","克林顿"};
ArrayList list2=new ArrayList();
list2.add(colors);
list2.add(countries1);
list2.add(persons);
pageContext.setAttribute("list2",list2);
%>
<logic:iterate id="first" name="list2" indexId="numberfirst">
<bean:write name="numberfirst"/>
<logic:iterate id="second" name="first">
<bean:write name="second"/>
</logic:iterate>
<br>
</logic:iterate>
运行效果:
0 red green blue
1 中国 美国 法国
2 乔丹 布什 克林顿 [/size][/size][/color][/color]</span>

第二种:struts2.0循环遍历元素,注:value是结果集。引用标签库<%@ taglib uri="/struts-tags" prefix="s" %>
s:iterator 标签有3个属性:
value:被迭代的集合
id :指定集合里面的元素的id
status 迭代元素的索引
1:jsp页面定义元素写法 数组或list


代码如下:

<span style="color:#CC6600;"><s:iterator value="{'1','2','3','4','5'}" id='number'>
<s:property value='number'/>A
</s:iterator>
打印结果为: 1A2A3A4A5A</span>

2:索引的用法
如果指定了status,每次的迭代数据都有IteratorStatus的实例,它有以下几个方法
int getCount()返回当前迭代了几个元素
int getIndex()返回当前元素索引
boolean isEven()当然的索引是否偶数
boolean isFirst()当前是否第一个元素
boolean isLast()
boolean isOdd()当前元素索引是否奇数


代码如下:

<span style="color:#CC6600;"><s:iterator value="{'a','b','c'}" id='char' status='st'>
<s:if test="#st.Even">
现在的索引是奇数为:<s:property value='#st.index'/>
</s:if>
当前元素值:<s:property value='char'/>
</s:iterator> </span>

3:遍历map
value可以直接定义为:
value也可以是数据栈里面的java.util.Map对象


代码如下:

<span style="color:#CC6600;">遍历写法如下:
<s:iterator value="map" id="id" status="st">
key : <s:property value='key'/>
value:<s:property vlaue='value'/>
</s:iterator>
当然key 和value 都可以使java 的 Object</span>

4:遍历数据栈.简单的List类,
List<Attr> class Attr{String attrName;String getAttrName(){return "123";}}


代码如下:

<span style="color:#CC6600;"><s:iterator value="label" id="id">
<s:property value="#id.attrName" />
</s:iterator>
当然value 还可以写成 value="%{label}" label可以有.操作
label的属性List 可以写成value="%{label.list}" 相当于:getLabel().getList();</span>

5:遍历2个list;


代码如下:

<span style="color:#CC6600;">List<AttrName> attrN {color,size,style}
List<AttrValue> attrV {red,20,gay}
这2个list的元素是一一对应的,一个attrN对应一个attrV
<s:iterator value="%{attrN }" id="id" status="status">
index is : <s:property value='status.index'/>
attrName is : <s:property value='id'/> or <s:property value='%{id}'/>
attrName is : <s:property value='%{attrV[#status.index]}'/>
</s:iterator></span>

第三种:serlvet用<c:>标签循环遍历,注:items是结果集。引用标签库<%@ taglib prefix="c" uri="/WEB-INF/c.tld" %>
<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:foreach>用法
转的,可以用来作为自己的学习笔记
<c:foreach>类似于for和foreach循环 以下是我目前见过的用法:

1、循环遍历,输出所有的元素。
<c:foreach items="${list}" var="li">
${li} www.jb51.net
</c:foreach>
注意:items 用于接收集合对象,var 定义对象接收从集合里遍历出的每一个元素。同时其会自动转型。

2、循环遍历,输出一个范围类的元素。
<c:foreach items ="${lis}" var = "li " begin="2" end ="12">
${li}
</c:foreach>
注意:begin 定义遍历的开始位置,end定义遍历的结束位置。begin 和end的引号必须写。

3、循环遍历,输出除某个元素以外的元素或输出指定元素。
<c:foreach items="${list}" var ="li" varStatus="status">
<c:if text="${status.count==1}>
${"第一个元素不要"}
</c:if>
${li}
</ c:foreach>
注意:varStatus 表示当前集合的状态(其实是不是,我也不太清楚,只知道这样用,会的人指点下),count为循环一个计算器。

4、循环遍历,输出第一个或最后一个元素。
<c:foreach items="${list}" var ="li" varStatus="status">
<c:if text="${status.first}">我是第一个元素</c:if>
<c:if text="${status.last}">我是最后一个元素</c:if>
</c:foreach>
注意:first表示如果是一个元素,则返回ture,反之则返回false
last 表示如果是最后一个元素,则返回ture,反之则返回false。

5、循环遍历,按指定步长输出。
<c:foreach items="list" var ="li" step="2">
${li}
</c:foreach>
注意:step为循环的步长。每次隔两个单位输出一个。如:1、3、5、==

(0)

相关推荐

  • javascript 循环调用示例介绍

    复制代码 代码如下: function checksdzt(){ sdzt = $("#viewObj_zt_text").val(); //循环调用,如果已经获取到了结果,则退出循环 loopgetinfo = setInterval("checksdztsub()",50); //这里循环调用,间隔50毫秒 } function checksdztsub(){ if ($("#viewObj_zt_text").val() !="&

  • js循环改变div颜色具体方法

    在使用javascript过程中,想循环遍历一个数组,经常使用的语法有两种: 复制代码 代码如下: for (var i; i < array.length; i++) {     statement; } for (var i in array) {     statement; } 这两种用法看起来能做同样的事情,但实际上两个循环的循环次数一般是不一样的.源码如下: 复制代码 代码如下: <!DOCTYPE html> <html> <head> <st

  • 用js的for循环获取radio选中的值

    例如: 复制代码 代码如下: <li><input type="radio" name="zt" value="1"></li> <li><input type="radio" checked="checked" name="zt" value="2"></li> <li><in

  • jsp页面循环集合操作整理

    第一种:struts1.2循环遍历元素,name是结果集.引用标签库<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %> <logic:iterate>主要用来处理在页面上输出集合类,集合一般来说是下列之一: 1. java对象的数组 2. ArrayList.Vector.HashMap等 例: 复制代码 代码如下: <logic:iterate

  • JAVA JSP页面技术之EL表达式整理归纳总结

    一.概念 表达式语言(Expression Language),或称EL表达式,简称EL,是Java中的一种特殊的通用编程语言,借鉴于JavaScript和XPath.主要作用是在Java Web应用程序嵌入到网页(如JSP)中,用以访问页面的上下文以及不同作用域中的对象 ,取得对象属性的值,或执行简单的运算或判断操作.EL在得到某个数据时,会自动进行数据类型的转换. 主要作用: 1) 获取数据 EL表达式主要用于替换JSP页面中的脚本表达式<%= %>,以从各种类型的web域 中检索java

  • JSP页面IE无法打开Internet 站点…… 已终止操作 的解决方法

    之所以说机缘巧合,意思是各种因素促成了这个事件,缺一不可.几个因素分别是:系统中的ie是ie6(具体的小版本之间的差别我不是很确定or清楚).编写jsp页面且用开发工具自动生成的jsp源码.使用了WdatePicker.js这个时间控件.以及页面代码的一些书写顺序. 之所以说经典,很明显,从上面的巧合中可以看出来了,ie6绝对是经典了. 全部测试代码如下(除要引用的控件相关文件外) 复制代码 代码如下: <%@ page language="java" import="

  • 使用java反射将结果集封装成为对象和对象集合操作

    java反射机制是什么 反射机制是在运行状态中,可以知道任何一个类的属性和方法,并且调用类的属性和方法: 反射机制能够做什么 1.判断运行对象的所属类 2.构造任意一个类的对象 3.获取任意一个类的属性和方法 4.调用任意属性和方法 5.生成动态代理 利用反射将结果集封装成为对象或者集合(实测可用) package coral.base.util; import java.beans.IntrospectionException; import java.beans.PropertyDescri

  • jsp页面显示数据库的数据信息表

    在日常jsp开发中:最基本的一个操作之一是把之前添加到数据库中的信息在jsp页面中显示出来,也就是增删改查中的查找的一部分: 下面是以上部分的开发步骤及分析. 1.在jsp页面: <thead> <tr> <th>用户名称</th> <th>用户性别</th> <th>用户年龄</th> </tr> </thead> <tbody> <% AccountDAO acco

  • 用定制标签库和配置文件实现对JSP页面元素的访问控制

    控制客户端访问是开发一个基于B/S的架构的系统的开发者必须考虑的问题.JSP或SERVLET规范的基于配置文件的安全策略对资源的控制是以文件为单位的,即只可以定义某个视图全部可以或全部不能被访问.一个比较复杂的系统往往要要求对视图的一部分(如JSP页面里的一个按钮)提供访问控制,只允许被某种角色的用户访问.如果采用可编程的安全策略,因为对用户角色和操作的定义在开发时不能定义,而且这种策略加大了程序员的工作量,它可能不是一种好的办法. 我采用定制标签库和和配置文件来解决这个问题:把要权限控制的JS

  • SpringMVC 向jsp页面传递数据库读取到的值方法

    在开发过程中,我们经常需要将数据库查询到的值放入jsp页面进行显示,在springmvc的controller中,我们采用request将数据传递过去. 思路: 1.在comtroller中调用service层的方法获取数据库的数据,并且将其通过modelandview的addObject方法放置到域中 2.在jsp页面中通过jsp标签进行读取 开发controller.java文件: //查询所有数据到页面显示 @RequestMapping("/dataAll") public M

  • JSP页面中文参数的传递(get和post方法分析)

    在项目中,我们经常遇到需要在JSP页面切换中传递中文字符.这主要有两种方式. ◆URL方式 例如: http://website/test1.jsp?act=add&type=苹果&param=%20D%20B ◆FORM方式 例如: 复制代码 代码如下: ﹤form name=test   mehtod="post"﹥   ﹤input type=hidden name=text2 value="中文"﹥   ﹤input type=text na

  • 动态jsp页面转PDF输出到页面的实现方法

    最近工作中遇到不少问题.总结一下.这段代码主要功能是将一个生成JSP页面转发成PDF输出到页面 需要利用ITEXT String html = ServletUtils.forward(request,response,"/WEB-INF/jsp/depot/print/jhd.jsp"); //转发请求到jsp,返回解析之后的内容而不是输出到浏览器 //System.out.println(html); byte[] pdf = PDFUtils.html2pdf(html); re

  • jsp页面 列表 展示 ajax异步实现方法

    1. 服务端先返回页面基本结构(如message.jsp), <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ tag

随机推荐