ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:108.33KB ,
资源ID:5796391      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5796391.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(struts2控制标签.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

struts2控制标签.docx

1、struts2控制标签struts2控制标签8.3控制标签控制标签关注程序的运行流程,比如用if/else来进行分支控制,用iterator来进行循环控制。接下来就来学习Struts2的控制标签。8.3.1if、elseif与else标签1:if标签的功能: 类似于Java程序中的if,用来表达分支判断。 else标签的功能: 类似于Java程序中的else。elseif标签的功能: 类似于Java程序中的else if。2:属性: if标签和elseif标签都只有一个test属性,它本身是一个OGNL表达式,运算结果为一个boolean值,表示是否符合条件,必须设置。 else标签没有属性。

2、3:示例: 由于大家对于Java中的if-else是非常熟悉的,因此这里只需要看看,用标签如何来表达即可,示例如下:java代码:查看复制到剪贴板打印1. 2. 6. =207. 您输入的值大于等于208. 9. s:elseiftest=#requestlen10. 您输入的值小于等于1011. 12. 13. 您输入的值在10与20之间14. 8.3.2iterator标签1:功能: iterator标签用来处理循环,可以用它遍历数组、Set和List等集合对象。这个标签还支持在ActionContext中保持一个保存遍历状态的对象,通过这个变量可以得到当前循环的各种信息。 iterato

3、r标签在遍历一组对象的时候,它把正在循环的对象放在值栈的栈顶,所以可以直接引用这个对象的方法或属性,后面给出示例。2:属性: iterator标签的主要属性: value:用来指明到底循环的是谁,这个属性的值是OGNL表达式,用来访问ActionContext和值栈中需要被循环的对象。 status:这个属性在ActionContext中保存一个对象,用来返回当前循环的各种信息,可以返回的信息有:l count:集合含有多少个对象。l index:正在循环的这一项的索引。l even:当前遍历到的对象是不是处于列表的偶数索引位置。l odd:当前遍历到的对象是不是处于列表的奇数索引位置。l f

4、irst:正在循环的是不是第一个。l last:正在循环的是不是最后一个。 begin、end、step:指明了如果使用索引来进行循环时的开始、结束和步长。 var:变量名称,用来引用存放到值栈的被循环的对象。3:示例: 其实在Java中处理循环的时候,主要用的是for循环和while循环,do-while循环的应用相对少一些。接下来用iterator标签来实现类似于Java中循环的功能。(1)实现类似于for循环的功能 假如现在要求完全使用标签,来实现循环输出1到10的值,该如何实现呢? 很明显,使用iterator标签的begin、end、step和var属性就可以了,示例代码如下:jav

5、a代码:查看复制到剪贴板打印1. 2. 3. 4. 上面的实现很类似于如下的Java代码:java代码:查看复制到剪贴板打印1. %2. for(inti=1;i有朋友可能会说(2)实现类似于while循环的功能 假如要循环输出一个List的值,那么就需要使用到var和value属性了,示例如下:java代码:查看复制到剪贴板打印1. 2. 3. %4. /准备点循环用的数据5. Listlist=newArrayList();6. for(inti=1;i11. 12. 13. 上面的实现很类似于如下的Java代码:java代码:查看复制到剪贴板打印1. (3)访问复杂的对象 如果List里

6、面放的是复杂对象呢,比如前面用过的UserModel,里面有两个属性:userId、name。页面上该如何循环显示呢? 示例代码如下:java代码:查看复制到剪贴板打印1. 2. 3. 4. %5. /准备需要循环的数据6. Listlist=newArrayList();7. UserModelum1=newUserModel();8. um1.setUserId(userId1);9. um1.setName(张三);10. list.add(um1);11. 12. UserModelum2=newUserModel();13. um2.setUserId(userId2);14. um

7、2.setName(李四);15. list.add(um2);16. 17. request.setAttribute(users,list);18. %19. 20. 21. userId=,22. name=23. 分析一下上面的代码,iterator标签的value属性指明了要循环谁,里面的OGNL表达式#request.users表明了要访问request的属性中名称为users的属性的值。接下来iterator标签在循环的时候,把当前正在循环的对象放到值栈的栈顶,比如循环第一次的时候,它就会把List中的第一个对象放到值栈的栈顶,这时候,访问这个对象的getName方法,就可以直接

8、用简单的“name”就可以了。(4)使用status属性 如果还想输出当前循环的索引,或者是想要把循环输出的数据用表格来展示,并按照奇数行和偶数行来设置不同的背景色,也就是我们熟悉的波浪纹或者是斑马纹背景,该如何实现呢?这当然需要使用iterator标签的status属性,把一个保存循环状态的对象放到ActionContext中,然后在iterator标签内的property标签中,就可以引用这个保存循环状态的对象了。先来示例输出当前循环的索引,示例如下:java代码:查看复制到剪贴板打印1. 2. 索引=,3. userId=,4. name=5. 注意,引用status属性名称的时候前面要

9、加#号,status这个对象可以使用的属性在前面的属性列表中写明了,#state.index就表示在循环内引用循环状态信息中的索引,每次循环完一个对象,state的内部状态都会相应变化。 如果要实现波浪纹或斑马纹背景的表格,该如何实现呢?首先需要多添加点数据,才好看出效果,其次把循环的数据放置到表格中去,然后通过循环的状态对象来判断是奇数行还是偶数行,为这些行设置不同的背景颜色就可以了。示例代码如下:java代码:查看复制到剪贴板打印1. 2. 3. 4. 5. %6. /准备需要循环的数据7. Listlist=newArrayList();8. UserModelum1=newUserMo

10、del();9. um1.setUserId(userId1);10. um1.setName(张三);11. list.add(um1);12. 13. UserModelum2=newUserModel();14. um2.setUserId(userId2);15. um2.setName(李四);16. list.add(um2);17. 18. UserModelum3=newUserModel();19. um3.setUserId(userId3);20. um3.setName(王五);21. list.add(um3);22. 23. UserModelum4=newUser

11、Model();24. um4.setUserId(userId4);25. um4.setName(马六);26. list.add(um4);27. 28. request.setAttribute(users,list);29. %30. 31. 32. 用户列表33. 34. 35. 索引36. 用户编号37. 用户姓名38. 操作39. 40. 41. 42. tr43. 44. bgcolor=#EFF8FF45. 46. 47. bgcolor=#B4CFF148. 49. 50. 51. 52. 53. 修改删除54. 55. 56. 运行效果如下图图8.9 示例iterato

12、r标签是不是看起来有点做列表页面的感觉,这就对了,以后用Struts2开发,一定少不了使用iterator标签的。8.3.3 append与param标签1:功能: append标签用于把几个已经存在的集合组合成一个大集合,param标签跟它连用,用来指定组合哪些集合。2:属性: append标签的主要属性: var:用来指定把组合后的大集合放到值栈里的变量名称。3:示例: 简单的示例如下:java代码:查看复制到剪贴板打印1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 首先用set标签来指定两个集合,对于来说,var属性指定了这个集合被放进值栈的名字为list1

13、,而value属性的值为1,2,3,本身是OGNL表达式,表示直接创建一个集合,里面有1、2、3三个值。 然后,使用append标签来把list1和list2组合成一个大的集合,中的var属性指定了组合后的大集合放进值栈的名字为list3,而param标签的value属性指定了被组合的集合。 最后,用iterator标签来遍历并输出合并后的集合。8.3.4generator标签1:功能: generator标签用来切分字符串,并把切分的结果组成一个集合。2:属性: generator标签的主要属性: val:指定被切分的字符串,必须指定。 separator:指定切分字符串用的分隔符,必须指定

14、。比如要用“,”来切分字符串“a,b,c,d”,最终的结果为包含a、b、c、d四个字符串的集合。 count:返回集合的最大长度。 converter:用于设置自定义的Converter,必须是org.apache.struts2.util.IteratorGenerator.Converter接口的实现类。 var:指定变量名称,用来访问放到值栈中的集合。3:示例: 来个简单的示例,把一个字符串分解成集合,然后循环输出。示例代码如下:java代码:查看复制到剪贴板打印1. 2. 3. 4. 5. 上面的示例中,先使用generator标签将val的值,也就是字符串a,b,c,d用separa

15、tor的值,也就是,来进行切分,把切分后的结果放入值栈,引用的名称为var属性的值arr。最后用iterator标签输出刚刚切分创建的集合。 如果把iterator标签嵌套在generator标签内,就可以不用指定iterator标签的value属性,而直接使用generator标签拆分字符串的结果了。java代码:查看复制到剪贴板打印1. 2. 3. 4. 5. 6. 8.3.5merge标签1:功能: merge标签用来把几个已经存在的集合组合成一个大集合,与append标签的作用类似,只是原来集合中出现的各个元素出现在大集合中的顺序不同。2:属性:merge标签的主要属性: var:用来

16、指定把组合后的大集合放到值栈里的变量名称。3:示例: 沿用前面的例子,稍稍修改一下,示例如下:java代码:查看复制到剪贴板打印1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 去运行测试一下,结果页面如下:图8.10 示例merge标签通过上面的示例可以看出,使用merge标签的时候,先出现原来各个集合中的第一个元素,然后是原来各个集合中的第二个元素,以此类推,所以结果为“1,4,2,5,3,6”。而以前在使用append标签的时候,原来集合中的元素出现在大集合中的顺序为第一个集合的所有元素都出现之后,再出现第二个集合的所有元素,结果为“1,2,3,4,5,6”。

17、这就看出merge标签和append标签的区别来了。8.3.6sort标签1:功能: 利用设置的比较器,来对指定的集合进行排序。2:属性:sort标签的主要属性: comparator:用来指定对集合排序使用的比较器的实例 source:需要排序的集合 var:变量名称,把集合排序后的结果存放到page context中的key值3:包含基本数据类型的集合排序示例: 还是通过示例来看sort的使用,先来示范对包含基本数据类型的集合的排序。(1)先来准备比较器,就是实现java.util.Comparator接口的类,实现对整型数据进行升序排序,示例如下:java代码:查看复制到剪贴板打印1. packagecn.javass.tag;2. publicclassMyComparatorimplementsjava.util.Comparator3. 4. publicintcompare(Objecto1,Objecto2)5. inta=Integer.parseInt(o1.toString();6. intb=Integer.parseInt(o2.toString();7. if(ab)8. return1;9. elseif(ab)10. return-1;11. 12. return0;13. 14. (2)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1