struts2中iterator标签的相关使用

合集下载

第五章:struts2标签库

第五章:struts2标签库

IBM Software Group
IBM Software Group
数据标签-----property标签
property标签用于输出值栈中的对象的属性(property)值,使用value属性来指定要输出 的对象属性,如果没有指定value属性,那么默认输出栈顶对象。
IBM Software Group
IBM Software Group
IBM Software Group
Struts2标签库
在早期的WEB开发中,JSP视图控制和显示技术主要依靠Java脚本来实现,这样一来 ,JSP页面重新嵌入了大量的Java脚本代码,给开发带来了极大的不方便。 从JSP1.1规范后,JSP增加了自定义标签库的支持。标签库是一种组件技术,通过标 签库,可以将复杂的Java脚本代码封装在组件中,开发者只需要使用简单的代码就可 以实现复杂的Java脚本功能。提供了Java脚本的复用性,提高了开发者的开发效率。 Struts2标签库相对struts1.x进行了巨大的改进,支持OGNL表达式,不再依赖任何表现 层技术。
IBM Software Group
IBM Software Group示例:访问地址:http://localhost:8080/.../setTag.action
IBM Software Group
数据标签-----push标签
push标签用于把一个值压入值栈(位于栈顶),注意和set标签的区别,set标签是将值放 到action上下文中。当push标签结束后,push标签放入值栈中的对象将被删除,换句 话说,要访问push标签压入栈中的对象,需要在标签内部去访问。 push标签的属性
IBM Software Group

Struts2学习之二--Struts2标签介绍

Struts2学习之二--Struts2标签介绍

Struts2学习之二--Struts2标签介绍热12已有 14625 次阅读 2009-07-12 18:53[顶]3G移动--Android开发工程师全能班(转) Struts2学习之二--Struts2标签介绍在上一篇文章《为Struts 2.0做好准备》中,我过于详细地介绍了Struts 2.0开发环境和运行环境的配置,所以,本文很少涉及的以上两方面的细节。

如果,您看完《为Struts 2.0做好准备》后,还有什么不明白,或者没法运行文中例子,请联系我。

我的E-MAIL:Max.M.Yuan@。

在介绍常用标志前,我想先从总体上,对Struts 1.x与Struts 2.0的标志库(Tag Library)作比较。

分类将标志库按功能分成HTML、Tiles、Logic和Bean等几部分严格上来说,没有分类,所有标志都在URI为“/struts-tags”命名空间下,不过,我们可以从功能上将其分为两大类:非UI标志和UI标志表达式语言(expression languages)不支持嵌入语言(EL)OGNL、JSTL、Groovy和Velcity以上表格,纯属个人总结,如有所不足或错误,请不吝指正好了,我要开始介绍“常用”(这里所谓的“常用”,是指在已往工作中使用Struts里经常用到的)的标志了。

1.非UI标志o if、elseif和else描述:执行基本的条件流转。

参数:名称必需默认类型描述备注test 是Boolean 决定标志里内容是否显示的表达式else标志没有这个参数id 否Object/String 用来标识元素的id。

在UI和表单中为HTML的id属性例子:<%@ page contentType="text/html; charset=UTF-8" %><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Condition Flow</title></head><body><h3>Condition Flow</h3><!--这里有点小技巧:本来可以用#[0]来获得,请求中name的值。

Struts2中的s标签 API Java Struts 程序开发

Struts2中的s标签 API Java Struts 程序开发
7. <s:autocompleter></s:autocompleter>-----自动完成<s:combobox>标签的内容,这个是ajax
B:
1. <s:bean name=""></s:bean>-----类似于struts1.x中的,JavaBean的值
C:
R:
1.
2. <s:radio list=""></s:radio>-----单选按钮
3. <s:reset></s:reset>-----重置按钮
S:
1. <s:select list=""></s:select>-----单选框
2. <s:set name=""></s:set>-----赋予变量一个特定范围内的值
4. <s:iterator></s:iterator>-----用于遍历集合
L:
1. <s:label></s:label>-----只读的标签
M:
1. <s:merge></s:merge>-----合并遍历集合出来的值
O:
数据标签:
action:直接调用一个Action,根据executeResult参数,可以将Action的处理结果包含到页面中。
bean:创建一个JavaBean实例。。
date:格式化输出一个日期属性。
debug:生成一个调试链接,当单击该链接时,可以看到当前栈值中的内容。

Struts2标签使用

Struts2标签使用

Struts2标签使用(1):<s:textfield> ---- 文本输入框使用:<s:textfield name=”实体Bean。

属性”></s:textfield>(2):<s:textarea> ----- 文本域输入框使用:<s:textarea name=”实体Bean。

属性”></s:textarea>(3):<s:password> ----- 密码输入框使用:<s:password name=”实体Bean。

属性”></s:password>前三个基本都是一样的。

如果是要显示值的话可以这样:value = “实体Bean。

Get***()”。

(4):<s:radio list=””> ---- 单选按钮使用:<s:radio list=””>其中list 属性是必须要有的。

<1>:第一种方式:list = “#{‘male’:’男’,’female’:’女’}”<2>:第二中方式:list = “#request/session.list”。

---- 与action 结合起来了。

如果要默认选中的话后面加上value = “”.也可以通过javascript 的方式来默认选中。

(5):<s:url/> --- url连接<s:a/> --- 超链接这两个标签一般结合起来来使用。

使用:<s:url id = “id” action = “userAction”/><s:a href=”%{id}”/>(6):<s:form/> --- 获取相应form的值使用:<1>:<s:form action = “userAction”><2>:<s:url id=”userId” action = “userAction”> -- 定义了一个userId的指向userActionde 路径<s:form action=”%{userId}”>(7):<s:submit/> ---- 提交标签(8):<s:reset/> ---- 重置标签(9):<s:hidden/> ---- 隐藏域标签使用:<s:hidden name=”实体Bean。

struts 标签logiciterate用法详解用法详解

struts 标签logiciterate用法详解用法详解

<logic:iterate> 是Logic 标签库中最复杂的标签,也是用途最广的一个标签,它能够在一个循环中遍历数组、Collection、Enumeration、Iterator 或Map 中的所有元素。

1. 遍历集合<logic:iterate> 的name 属性指定需要进行遍历的集合对象, 它每次从集合中检索出一个元素, 然后把它放在page 范围内, 并以id 属性指定的字符串来命名这个元素, 例如:<%Vector animals = new Vector();animals.addElement("Dog");animals.addElement("Cat");animals.addElement("Bird");animals.addElement("Chick");request.setAttribute("Animals", animals);%><logic:iterate id="element" name="Animals"><bean:write name="element"/><br></logic:iterate>以上代码先定义了一个Vector 类型的集合变量Animals, 它存放在request 范围内. 接下来<logic:iterate> 标签在一个循环中遍历Animals 集合(这个集合名就是在标签中的nam e 属性的值)中所有元素, 每次检索到一个元素, 就把它命名为"element"(标签id 属性的值), 并存放在page 范围内.在<logic:iterate> 中, 还嵌套了一个<bean:write>标签, 它用于输出每个元素的内容. 以上代码的输出内容如下:DogCatBirdChicklength 属性指定需要遍历的元素的数目, 如果没有设置length 属性, 就遍历集合中的所有元素.offset 属性指定开始遍历的起始位置, 默认值为"0" , 表示从集合的第一个元素开始遍历.indexId 属性定义一个代表当前遍历元素序号的变量, 这个变量被存放在page 范围内,可以被标签主体的<bean:write> 标签访问. 例如:<logic:iterateid="element" // 指定输出元素的名与<bean:write> 中name 属性一致indexId="index" // 遍历元素序号的变量, 这个变量放在page 范围内name="Animals" // request 中的集合名, 从中取循环取出元素offset="1" // 从集合的第2 条记录开始取数length="2"> // 取出2 个元素<bean:write name="index"/>. // 输出每个元素的序号, 与indexId 的属性一致<bean:write name="element"/><br> // 输出每个元素的内容, 与id 的属性一致</logic:iterate>2. 遍历Map<logic:iterate> 标签还可以遍历HashMap 中的元素, 例如:<%HashMap months = new HashMap();months.put("Jan","January");months.put("Feb","February");months.put("Mar","March");request.setAttribute("month", months);%><logic:iterate id="element" indexId="ind" name="months"><bean:write name="ind"/>. // 序号<bean:write name="element" property="key"/>: // 键名<bean:write name="element" property="value"/> // 键值</logic:iterate>以上代码先定义一个名为"months" 的HashMap, 存放在request 范围内. 接下来在<log ic:iterate> 标签遍历months 对象的每一个元素, 每一个元素包含一对key/value . 在<lo gic:iterate> 标签主体中包含三个<bean:write> 标签, 分别输出每个元素的序号、key 和value. 以上代码的输出内容如下:0.Mar: March1.Feb: February2.Jan: January如果HashMap 中的每个元素的value 是集合对象, 则可以采用嵌套的<logic:iterate>标签遍历集合中的所有对象, 例如:<%HashMap h = new HashMap();String vegetables[] = {"pepper","cucumber"};String fruits[] = {"apple","orange","banana","cherry","watermelon"};String flowers[] = {"chrysanthemum","rose"};String trees[] = {"willow"};h.put("Vegetables", vegetables);h.put("Fruits",fruits);h.put("Flowers",flowers);h.put("Trees",trees);request.setAttribute("catalog",h);%><logic:iterate id="element" // 与<bean:write> 中的name 属性对应, 输出内容indexId="ind" // 与<bean:write> 中的name 属性对应, 输出序号name="catelog"> // 指定输出元素的名称<bean:write name="ind"/>. // 输出序号<bean:write name="element" // 与<logic:iterate>中id 属性对应property="key"/> // 集合中的键名<logic:iterateid="elementValue" // 与<bean:write> 中的name 属性对应name="element" // 指定输出元素的名称property="value" // 集合中的键值length="3" // 取3 个元素offset="1"> // 从第2 个位置取-------<bean:write name="elementValue"/></logic:iterate></logic:iterate>以上代码先定义一个名为"catelog" 的HashMap , 存放在request 范围内, 它的每个元素的value 为字符串数组.接下来外层的<logic:iterate>标签遍历HashMap 中的所有元素, 内层的<logic:iterate>标签访问每个元素的value 属性, 遍历value 属性引用的字符串数组中的所有元素.3. 设置被遍历的变量可以通过以下方式来设置需要遍历的变量(1) 设置name 属性, name 属性指定需要遍历的集合或Map, 例如:<logic:iterate id="element" name="Animals"><bean:write name="element"/></logic:iterate>(2) 设置name 属性和property 属性, name 属性指定一个JavaBean, property 属性指定JavaBean 的一个属性, 这个属性为需要遍历的集合或Map, 例如:<logic:iterate id="element" indexId="ind" name="catelog"><bean:write name="ind"/><bean:write name="element" property="key"/><logic:iterate id="elementValue" name="element" property="value" len gth="3" offset="1">--------<bean:write name="elementValue"/></logic:iterate></logic:iterate>(3) 设置collection 属性, collection 属性指定一个运行时表达式, 表达式的运算结果为需要遍历的集合或Map, 例如:<logic:iterate id="header" collection"<%=request.getHeaderNames()%>"> <bean:write name="header"/></logic:iterate>4. 读取JavaBean 中的数据(1) 在Jsp 页面中加入JavaBean 如:<jsp:useBean id="articleClasses" class="com.GetArticleClasses"/>上面这个JavaBean 要求必须存在一个集合数组对象,如Vector,Collection,ArrayList 等;在这个JavaBean 的构造函数中,取得数据库中的数据,并将其存入数组对象中。

iterator方法

iterator方法

iterator方法标题:追寻 iterator 的足迹引言:在编程世界中,我们经常会遇到需要处理集合元素的情况。

为了更高效地处理这些集合,我们需要使用到 iterator 这一神奇的工具。

那么,什么是 iterator 呢?它又如何帮助我们更好地操控集合呢?让我们一起来追寻 iterator 的足迹,揭开它的神秘面纱。

1. iterator 的定义与作用Iterator(迭代器)是一种用于遍历集合的接口,它提供了一种统一的访问集合元素的方法。

通过使用 iterator,我们可以按照特定的顺序逐个访问集合中的元素,而不需要了解集合的内部结构。

这样,我们就可以更加方便地对集合进行操作了。

2. iterator 的使用方法使用 iterator 非常简单。

我们只需要通过调用集合的 iterator 方法,就可以获取到一个 iterator 对象。

然后,我们就可以使用该对象的各种方法来遍历集合了。

不同的编程语言可能会有不同的iterator 实现方式,但基本的使用方法是相似的。

3. iterator 的遍历方式iterator 提供了多种遍历方式,以满足不同的需求。

最常见的是使用 while 循环结合 hasNext 和 next 方法来遍历集合。

通过判断hasNext 方法的返回值,我们可以确定是否还有下一个元素可供访问。

而 next 方法则可以返回当前位置的元素,并将 iterator 移动到下一个位置。

4. iterator 的优势与局限使用 iterator 遍历集合具有多个优势。

首先,iterator 可以将集合的内部结构与遍历过程解耦,使得代码更加清晰易读。

其次,iterator 可以在遍历过程中对集合进行修改,而不会引发异常。

然而,iterator 也存在一些局限性,比如无法逆向遍历集合、无法并发访问等。

在使用 iterator 时,我们需要根据具体情况选择合适的遍历方式。

5. iterator 的应用场景iterator 不仅仅用于遍历集合,它还可以应用于其他许多场景。

java迭代器iterator用法

java迭代器iterator用法

java迭代器iterator用法Java是一门广泛的编程语言,尤其在企业级的开发中,Java往往都是开发者们首选的语言。

Java提供了丰富的类库和工具可以帮助我们更加便捷地开发应用程序。

其中,迭代器(iterator)也是Java工具的一部分,它被广泛地应用在Java程序中。

什么是迭代器?在Java中,“迭代器”是一个对象,可以帮助程序员遍历集合(collection)。

一个集合(collection)一般包含多个元素,在Java中有很多种不同类型的集合,比如数组、列表、集和映射等。

通常我们需要通过迭代器来逐一访问这些元素。

为什么需要迭代器?在Java中,不同类型的集合都有不同的遍历元素的方法。

数组可以通过for循环来遍历,链表可以通过递归来遍历。

但是这些方法需要我们手动编写代码,而且对于不同类型的集合,我们需要编写不同的代码。

另外,这些方法有些步骤比较固定,过程比较繁琐,这也让我们在编写程序时需要花费很多时间和精力。

迭代器可以帮助我们解决这些问题,让我们更加方便地进行集合元素的遍历。

使用迭代器Java的迭代器实现了Iterator接口,该接口提供了以下方法:- boolean hasNext(): 如果存在更多元素,则返回true。

- E next(): 返回迭代器所指的下一个元素。

- void remove(): 删除上一次调用next()后返回的元素。

接下来我们通过一些示例来说明如何使用迭代器。

示例1:遍历数组下面的示例演示了如何使用迭代器来遍历数组。

```java int[] nums = {1, 2, 3, 4, 5};Iterator<Integer> iterator =Arrays.stream(nums).iterator();while (iterator.hasNext()){ System.out.println(iterator.next()); } ```示例2:遍历列表下面的示例演示了如何使用迭代器来遍历列表。

Struts2详细实例教程

Struts2详细实例教程

Struts2(上)一、经典的MVC模式二、Struts1.x对MVC的实现三、Struts1.x的主要组件和作用组件作用ActionServlet 中央控制器Action 分控制器,调用JavaBean实现业务逻辑,Action可以分为Action、DispatchAction等不同类型ActionForm 封装参数,实现服务器验证,文件上传等Forward 转发到目的地,可以是JSP,也可以是另一个ActionStruts-config.xml 配置文件,配置有ActionForm,Action,Forward等,通过XML解析,然后使用反射技术使用该文件Struts标签库和JSTL类似,和Struts-config.xml、ActionForm、Action等对象可以紧密集成四、Struts1.x 开发实例-登录程序见案例。

五、Struts2(WebWork)的MVCStruts2的MVC架构六、Struts2的主要组件组件作用FilterDispatcher 起中央控制器作用的过滤器Action 处于Model层的Action,调用JavaBean实现业务逻辑struts.xml 核心配置文件,配置有Action、Result等result 和forward类似,转发的目的地,支持多种视图技术。

七、Struts2的实例-登录在MyEclipse环境中建立一个新的web工程,名称“Struts2Login”,存放路径“f:\Struts2Login”。

在Struts2.0.11版本中找到war包struts2-blank-2.0.11.war,解开该war包,在WEB-INF/lib 目录下复制出所有的jar包,这些jar包就是一个Struts2程序所需要的基础jar包,把它们复制到新建的web工程的WEB-INF/lib目录中。

在src目录下建立一个类,包名mypack,类名UserAction,其代码如下:package mypack;import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport {private String username;private String userpass;public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getUserpass() {return userpass;}public void setUserpass(String userpass) {erpass = userpass;}@Overridepublic String execute() throws Exception {if ("Mike".equals(username) && "123".equals(userpass)|| "张三".equals(username) && "abc".equals(userpass))return "success";elsereturn "error";}}在src目录下建立Struts2的配置文件struts.xml,内容如下:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><!-- 定义包管理配置的action 继承struts-default.xml中的配置 --><package name="actions" extends="struts-default"><!-- 定义Action(login.action) --><action name="login" class="erAction"><!-- 定义转发路径对应的字符串名 --><result name="success">/Success.jsp</result><result name="error">/Error.jsp</result></action></package></struts>修改web.xml,在其中加入一个过滤器,过滤/*路径。

struts2_超链接与action使用

struts2_超链接与action使用

Struts2 超链接和 action 使用Struts2.0 链接标签Web 应用区别于普通的站点之处在于Web 应用可以创建一个动态的响应。

为了使从一个页面中链接一个动态数据变得简单,Struts2 框架提供了一系列的标签。

Struts 标签的一种用法是创建链接到其他 Web 资源,特别是针对那些在本地应用中的资源。

1.普通链接Web 程序中最普通的应用是链接到其他页面,下面看 Welcome.jsp。

<%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags" %><html><head><title>Welcome</title><link href="<s:url value="/css/tutorial.css"/>" rel="stylesheet"type="text/css"/></head><body><h3>Commands</h3><ul><li><a href="<s:url action="Login_input"/>">Sign On</a></li><li><a href="<s:url action="Register"/>">Register</a></li></ul></body></html>1.1 说明1.<%@ taglib prefix="s" uri="/struts -tags" %>此句表示导入 struts 标签,并以 s 为前缀。

s:iterator 用法

s:iterator 用法

struts2的s:iterator 可以遍历数据栈里面的任何数组,集合等等以下几个简单的demo:s:iterator 标签有3个属性:value:被迭代的集合id :指定集合里面的元素的idstatus 迭代元素的索引1:jsp页面定义元素写法数组或list<s:iterator value="{'1','2','3','4','5'}" id='number'><s:property value='number'/>A</s:iterator>打印结果为: 1A2A3A4A5A2:索引的用法如果指定了status,每次的迭代数据都有IteratorStatus的实例,它有以下几个方法int getCount()返回当前迭代了几个元素int getIndex()返回当前元素索引boolean isEven()当然的索引是否偶数boolean isFirst()当前是否第一个元素boolean isLast()boolean isOdd()当前元素索引是否奇数<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>3:遍历mapvalue可以直接定义为:value="#{"1":"a","2":"b"}"每个元素以都好隔开。

Web技术练习题

Web技术练习题

//抽象产品 2 abstract class Sample1{ public String name; } //具体产品 class SampleA extends Sample{ public SampleA(String name){ = name; } } //具体产品 class SampleB extends Sample{ public SampleB(String name){ = name; } } //具体产品 class Sample1A extends Sample1{ public Sample1A(String name){ = name; } } //具体产品 class Sample1B extends Sample1{ public Sample1B(String name){ = name; } } //具体工厂 public class FactoryMethod extends Factory{’女’}" />
<s:checkboxlist name="interest" label="兴趣爱好" list="#{'01':'唱歌','02':'跳舞','03':'篮球'}"/>
<s: select name="sclass" label="班级"
list="{'软件0821','软件0822','软件0823','软件0824'}" />
1.下列哪一个是能在一个 Action 执行的前后执行的代码. ( A ognl B Interceptor C Action D Spring

iterator的用法

iterator的用法

iterator的用法
Iterator是Java中一种用于遍历集合(Collection)的接口。

它提供了一个方法来迭代元素并访问集合中的每个对象。

Iterator对象可以在Collection中获得,并用于循环遍历元素,将其存储在集合中或删除它。

Iterator有三个主要的方法:hasNext()、next()和remove()。

hasNext()方法用于检查下一个元素是否存在,如果存在
则返回true,否则返回false。

next()方法用于返回迭代器的下一个元素。

在第一次调用next()方法之前必须调用hasNext()方法,以确保元素存在。

remove()方法用于从迭代器指向列表的最后一个元素列表中删除当前元素。

调用remove()方法之前必须调用next()方法。

Iterator还有一些其他方法,例如forEachRemaining()和forEach(),它们提供了更高效的方式来遍历集合。

但是,版
本较早的Java中的Iterator不支持并发修改,因此在使用Iterator来修改集合之前,必须使用synchronized关键字或使
用并发集合(如ConcurrentHashMap)来确保线程安全。

总之,Iterator是Java集合框架中一个非常常用的接口,通过使用Iterator,我们可以遍历集合并获取其中的元素,包
括对集合中元素的增加、删除操作。

在使用Iterator时需要注意线程安全的问题,以避免由于多线程操作集合而带来的问题。

Struts2-interceptor

Struts2-interceptor

Struts2拦截器一、什么是拦截器?1、拦截器,在AOP(Aspect-Oriented Programming<面向切面编程>)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。

拦截是AOP的一种实现策略。

在Webwork的中文文档的解释为——拦截器是动态拦截Action调用的对象。

它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。

同时也是提供了一种可以提取action 中可重用的部分的方式。

2、拦截器链(Interceptor Chain,在Struts 2中称为拦截器栈Interceptor Stack)。

拦截器链就是将拦截器按一定的顺序联结成一条链。

在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。

3、如何使用struts2拦截器,或者自定义拦截器。

特别注意,在使用拦截器的时候,在Action里面必须最后一定要引用struts2自带的拦截器缺省堆栈defaultStack,如下(这里我是引用了struts2自带的checkbox拦截器):<interceptor-ref name="checkbox"><param name="uncheckedValue">0</param></interceptor-ref><interceptor-ref name="defaultStack"/>(必须加,否则出错)4、也可以改为对全局Action设置自己需要的拦截器,如下:在struts.xml里面定义全局的配置设置<package name="struts-shop" extends="struts-default"><interceptors><interceptor-stack name="myStack"><interceptor-ref name="checkbox"><param name="uncheckedValue">0</param></interceptor-ref><interceptor-ref name="defaultStack"/></interceptor-stack></interceptors><default-interceptor-ref name="myStack"/>(这句是设置所有Action自动调用的拦截器堆栈)</package>struts-action.xml里面配置Action如下:<package name="LogonAdmin" extends="struts-shop">(这里扩展struts.xml里面定义的配置就可以了)<action name="logon" class="logonAction"><result>/jsp/smeishop/admin/index.jsp</result> <resul t name="error">/jsp/smeishop/admin/logon.jsp</result><result name="input">/jsp/smeishop/admin/logon.jsp</result> </action><action name="logout" class="logoutAction"><result>/jsp/smeishop/admin/logon.jsp</result></action></package>二、Struts2自带的配置及其拦截器配置1、Struts2 拦截器 [Interceptor]拦截器的工作原理如上图,每一个Action请求都包装在一系列的拦截器的内部。

struts2标签详解

struts2标签详解

Struts2 标签详解详细的说明了struts2所有标签由整理版权属 以及原作者。

由于标签太多难做目录索引,如果你觉得有目录索引更好,请到/p/myjdemo/downloads/list 下载CHM版本的Struts2标签详解,谢谢。

aa标签创建一个HTML超链接,等价于HTML 的<a href=""....示范代码:<s:a href="login.action">登陆</s:a>action使用action标签可以允许在JSP页面中直接调用Action,因为需要调用Action,故可以指定需要被调用Action的name以及namespace。

如果指定了executeResult参数的属性值为true,该标签还会把Action的处理结果(视图支援)包含到本页面中来。

action标签的属性:id:可选属性,该属性将会作为该Action的引用IDname:必填属性,指定该标签调用哪个Actionnamespace:可选,指定该标签调用的Action所在的namespace. executeResult:可选,指定是否要将Action的处理结果页面包含到本页面。

默认是false,即不包含ignoreContextParams:可选,它指定该页面中的请求参数是否需要传入调用的Action、默认是false,即将本页的请求参数传入被调用的Action。

下面是本示例应用中的Action类,包含连个处理逻辑。

代码如下public class TagAction extednds ActionSupport{//封装用户请求参数的author属性private String author;//author的get和set的方法,省略……public String execute() throws Exception{return "done";}public String login() throws Exception{ServletActionContext.getRequest().setAttribute("author",getAuthor()); return "done";}}上面的Action类包含两个处理逻辑,可以在struts.xml文件中通过指定method属性来将该Action类映射成两个逻辑Action。

js iterator用法

js iterator用法

js iterator用法摘要:1.简介2.JavaScript 中的Iterator 接口3.Iterator 的基本用法4.Iterator 的next 方法5.Iterator 的hasNext 方法6.使用Iterator 遍历集合7.总结正文:Iterator 是JavaScript 中一个用于遍历集合的接口。

通过Iterator 接口,我们可以实现对集合元素的一一访问,这在某些场景下非常有用。

本篇文章将详细介绍Iterator 的用法。

首先,我们需要了解Iterator 接口的基本用法。

Iterator 接口只有一个next 方法,该方法返回一个包含两个元素的数组,第一个元素是当前遍历到的元素,第二个元素是Iterator 对象本身。

此外,Iterator 接口还有一个hasNext 方法,用于判断是否还有下一个元素可以遍历。

Iterator 的next 方法是Iterator 接口的主要方法,它返回一个包含当前元素和Iterator 对象的数组。

我们可以通过返回的数组来获取当前遍历到的元素,并判断是否还有下一个元素。

当遍历到最后一个元素时,next 方法将返回一个空数组。

与next 方法相对应的是hasNext 方法,该方法返回一个布尔值,表示是否还有下一个元素可以遍历。

当hasNext 方法返回true 时,说明还有元素可以遍历;当hasNext 方法返回false 时,说明已经遍历到最后一个元素。

在实际应用中,我们可以使用Iterator 接口来遍历各种集合,如数组、字符串、Map、Set 等。

以数组为例,我们可以通过以下步骤使用Iterator 遍历数组:1.创建一个数组并调用其values 方法,该方法返回一个Iterator 对象。

2.使用Iterator 对象的next 方法获取当前遍历到的元素,并判断是否还有下一个元素。

3.当next 方法返回的数组不为空时,我们可以对当前元素进行处理,如打印、修改等。

struts2常用标签详解

struts2常用标签详解

struts2标签详解A:<s:a xhref=""></s:a>-----超链接,类似于html里的<a></a><s:action name=""></s:action>-----执行一个view里面的一个action<s:actionerror/>-----如果action的errors有值那么显示出来<s:actionmessage/>-----如果action的message有值那么显示出来<s:append></s:append>-----添加一个值到list,类似于list.add();<s:autocompleter></s:autocompleter>-----自动完成<s:combobox>标签的内容,这个是ajaxB:<s:bean name=""></s:bean>-----类似于struts1.x中的,JavaBean的值C:<s:checkbox></s:checkbox>-----复选框<s:checkboxlist list=""></s:checkboxlist>-----多选框<s:combobox list=""></s:combobox>-----下拉框<s:component></s:component>-----图像符号D:<s:date/>-----获取日期格式<s:datetimepicker></s:datetimepicker>-----日期输入框<s:debug></s:debug>-----显示错误信息<s:div></s:div>-----表示一个块,类似于html的<div></div><s:doubleselect list="" doubleName="" doubleList=""></s:doubleselect>-----双下拉框E:<s:if test="#name=‟hujianqiang‟">asdfasdf</s:if><s:elseif test=""></s:elseif><s:else></s:else>-----这3个标签一起使用,表示条件判断F:<s:fielderror></s:fielderror>-----显示文件错误信息<s:file></s:file>-----文件上传<s:form action=""></s:form>-----获取相应form的值G:<s:generator separator="" val=""></s:generator>----和<s:iterator>标签一起使用H:<s:head/>-----在<head></head>里使用,表示头文件结束<s:hidden></s:hidden>-----隐藏值I:<s:i18n name=""></s:i18n>-----加载资源包到值堆栈<s:include value=""></s:include>-----包含一个输出,servlet或jsp页面<s:inputtransferselect list=""></s:inputtransferselect>-----获取form的一个输入<s:iterator></s:iterator>-----用于遍历集合L:<s:label></s:label>-----只读的标签M:<s:merge></s:merge>-----合并遍历集合出来的值O:<s:optgroup></s:optgroup>-----获取标签组<s:optiontransferselect doubleList="" list="" doubleName=""></s:optiontransferselect>-----左右选择框P:<s:param></s:param>-----为其他标签提供参数<s:password></s:password>-----密码输入框<s:property/>-----得到'value'的属性<s:push value=""></s:push>-----value的值push到栈中,从而使property标签的能够获取value的属性R:<s:radio list=""></s:radio>-----单选按钮<s:reset></s:reset>-----重置按钮S:<s:select list=""></s:select>-----单选框<s:set name=""></s:set>-----赋予变量一个特定范围内的值<s:sort comparator=""></s:sort>-----通过属性给list分类<s:submit></s:submit>-----提交按钮<s:subset></s:subset>-----为遍历集合输出子集T:<s:tabbedPanel id=""></s:tabbedPanel>-----表格框<s:table></s:table>-----表格<s:text name=""></s:text>-----I18n文本信息<s:textarea></s:textarea>-----文本域输入框<s:textfield></s:textfield>-----文本输入框<s:token></s:token>-----拦截器<s:tree></s:tree>-----树<s:treenode label=""></s:treenode>-----树的结构U:<s:updownselect list=""></s:updownselect>-----多选择框<s:url></s:url>-----创建urlStruts2常用的Ajax标签Struts2为了简化Ajax过程,提供了一些常用的Ajax标签,对于一些更复杂的Ajax通信过程,我们可以使用JSON插件来实现。

struts2 页面遍历显示集合

struts2 页面遍历显示集合

struts2 页面遍历显示集合<s:iterator />可以遍历数据栈里面的任何数组,集合等等在使用这个标签的时候有三个属性值得我们关注1. value属性:可选的属性,value属性是指一个被迭代的集合,使用ognl表达式指定,如果为空的话默认就是ValueStack栈顶的集合.2.id属性:可选属性, 是指集合元素的id3.status属性:可选属性,该属性在迭代时会产生一个IteratorStatus对象,该对象可以判断当前元素的位置,包含了以下属性方法:int getCount(); 迭代元素个数int getIndex(); 迭代元素当前索引boolean getFirst(); 是否为第一个boolean getEven(); 是否为偶boolean getLast(); 是否最后一个bolean getOdd(); 是否为奇由于iteratorstatus对象并不是ognl的根对象因此访问需要加上#访问如下例子:<s:iterator value=”{’dd’,'bb’,'cc’}”status=”st”><s:if test=”#st.odd”><s:property value=”#st.index”/></s:if></s:iterator>iterator也可以迭代map对象,map对象中有几对key-value 就迭代几次,分别使用<s:property value=”key”/><s:property value=”value”/>iterator也可以迭代简单的数组集合<s:iterator value="collection1" status="status"><s:property value="collection1[#status.index][0]"/><s:property value="collection1[#status.index][1]"/></s:iterator>说明:[#status.index][?]" ,指示遍历数组指定的脚标元素,如果你不知道数组的长度呢?//以下是遍历数组每一个元素<s:iterator value="total" status="stuts"><s:iterator value="total[#stuts.index]" ><s:property/><br></s:iterator></s:iterator>//直接使用<s:property/>也可以打印出每一个数组内容***********iterator的value******************1.如果需要引用valueStack中的值,需要使用这样的形式。

java中iterator的用法

java中iterator的用法

java中iterator的用法
一、iterator遍历:
Iterator是一个接口,常用于遍历集合类,尤其是java中的容器,List,Set,Map等。

Iterator接口声明了三个方法:hasNext,next和remove,分别用于查询当前位置是否还有元素,获取当前位置的元素,删除当前位置的元素,可以类比出for循环的三步,判断,获取,更新,可以用Iterator来实现上述几种遍历方式。

二、iterator的使用:
1. 初始化Iterator
初始化iterator时,需要使用collection对象的iterator()方法来获取该容器的iterator对象,此时iterator对象指向的是容器的第一个元素;
Iterator<String> it = collection.iterator();
2. 判断是否有下一个
使用iterator的hasNext()方法来判断是否有下一个,当返回true时,表明要获取的元素不为空;
if(it.hasNext()){
t String str = it.next();
}
3. 获取元素
使用iterator的next()方法来获取集合中当前指向的元素,并将指针指向下一元素;
4. 删除元素
使用iterator的remove()方法,可以将当前指向的元素从集合中删除,但是需要注意的是每次调用remove()方法前都需要使用next()方法来获取元素,然后再调用remove()方法,否则会抛出IllegalStateException。

iterator的基本用法

iterator的基本用法

iterator的基本⽤法 1.iterator输出package com.iterator.demo;import java.util.Iterator;import java.util.Set;public class IteratorDemo {public static void main(String[] args) {Set<String> all = Set.of("Hello", "world","sina","sohu");Iterator<String> iter = all.iterator();while (iter.hasNext()) {String string = iter.next();System.out.println(string);}}}运⾏结果:worldhellosinasohu2.remove()删除当前元素package com.iterator.demo;import java.util.HashSet;import java.util.Iterator;import java.util.Set;public class IteratorDemo {public static void main(String[] args) {Set<String> all = new HashSet<String>();all.add("hello");all.add("world");all.add("sina");all.add("sohu");Iterator<String> iter = all.iterator();while (iter.hasNext()) {String string = iter.next();System.out.println(string);if("world".equals(string)) {iter.remove();//删除当前的数据}}System.out.println(all);}}运⾏结果:worldhellosinasohu[world, hello, sina, sohu]3.如果使⽤Collection中的remove()⽅法,则会报并发修改异常。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6)、最后再来看下在iterator中调用value ቤተ መጻሕፍቲ ባይዱtack的用法。
假定countries是一个List对象,每一个country有一个name属性和一个citys List对象,并且每一个city也有一个name属性 。那么我们想要在迭代cities是访问countries的name属性就的用如下方式:
index : int - 返回当前迭代位置的编号(从0开始)
first : boolean - 如果当前迭代位置是第一位时返回true
last : boolean - 如果当前迭代位置是最后一位时返回true
modulus(operand : int) : int - 返回当前计数(从1开始)与指定操作数的模数
<!--奇数行显示为红色,偶数行显示为绿色-->
<s:iterator value="days" status="offset">
<s:else>
<s:if test="#offset.odd==true">
<li style="color: red" mce_style="color: red"><s:property /></li>
struts2中iterator标签的相关使用
English Title:(Turn) of label of the Iterator in Struts2 relevant use
在说明s:iterator标签的使用前,先了解下struts2中的Value Stack。这里参考了webwork中对Value Stack的描述,由于struts2是在webwork的基础上进行升级的,因此webwork对于Value Stack的表述同样适用于struts2。在这里不描述Value Stack具体做什么,但有两点需要注意:
<s:iterator value="aTs" status="of">
<s:if test="#st"><br/></s:if>
<s:iterator value="top">
<!--亦可用[0].top替代。如果单纯用[0],则会同时打印该处栈对象信息-->
</s:if>
<s:else>
<li><s:property /></li>
</s:else>
</s:else>
</s:iterator>
odd关键字用来判断当前迭代位置是否为奇数行。odd返回boolean类型;
evne关键字用来判断当前迭代位置是否为偶数行。even返回boolean类型
view plaincopy to clipboardprint?
<s:iterator value="countries">
<s:iterator value="cities">
<s:property value="name"/>, <s:property value="[1].name"/><br>
<s:property />
</s:iterator>
</s:iterator>
<!--遍历二维数组,The trick here is to use 'top' as the value for the inner iterator-->
一个value stack本质上是一个List;
在栈中调用[n]将返回一个从位置n开始的子栈;
对于2举个例子说明。假定Value Stack包含了[model,action,others],那么
[0] --- 返回 [model,action,others];
[1] --- 返回 [action,others];
<s:iterator value="days" status="offset">
<s:else>
<s:if test="#offset.odd==true">
<li style="color: red" mce_style="color: red"><s:property /></li>
<s:property />
</s:if>
</s:iterator>
<s:iterator value="days">
<s:if test="top!='Monday'">
<s:property />
4)、使用 odd / even 关键字
下面的例子要实现每行输出颜色不同的效果。
defined List<String> days ["Monday","Thursday","Friday","Sunday"]
view plaincopy to clipboardprint?
</s:if>
</s:iterator>
top 指代当前迭代元素,可以为对象;
这里的top可用[0].top替代,但不能使用[0]。[0]代表整个栈对象。如果单纯调用[0]将会调用其toString()方法输出对象信息;
3)、使用 last / first 关键字使用
defined String[][] aTs = { { "一", "二", "三", "四" },{ "一一", "二二", "三三", "四四"} };
view plaincopy to clipboardprint?
<!--遍历二维数组,The trick here is to use 'top' as the value for the inner iterator-->
</s:iterator>
</s:iterator>
<s:iterator value="countries">
<s:iterator value="cities">
<s:property value="name"/>, <s:property value="[1].name"/><br>
[2] --- 返回 [others];
现在将开始介绍s:iterator的一些使用。以下代码片段均在开发环境eclipse3.4 wtp、tomcat5.5、jdk5上使用struts2.1.6测试通过。
1) 、访问 days
defined List<String> days ["Monday","Thursday","Friday","Sunday"]
</s:if>
<s:else>
<li><s:property /></li>
</s:else>
</s:else>
</s:iterator>
<!--奇数行显示为红色,偶数行显示为绿色-->
</s:iterator>
</s:iterator>
这里的 <ww:property value="name"/>取的是;<ww:property value="[1].name"/>取得是
<ww:property value="[1].name"/> 等价于 <ww:property value="[1]"/>
<s:property />
</s:iterator>
</s:iterator>
iterator 标签中的status属性代表当前迭代的位置;
#st用于判断当前是否跌到的最后一个元素;
last返回一个boolean类型;
first 返回一个boolean类型;
view plaincopy to clipboardprint?
<s:iterator value="days"><s:property /></s:iterator>
<s:iterator value="days"><s:property /></s:iterator>
2) 、使用 top 关键字使用(过滤掉Monday)
we refer to a specific position on the stack: '[1]'. The top of the stack, position 0, contains the current city, pushed on by the inner iterator; position 1 contains the current country, pushed there by the outer iterator.(city处于当前栈,即top或者[0],而[1]指明了外层iterator对象,即country)
相关文档
最新文档