快速业务通道

Struts2权威指南 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14

Struts2权威指南

时间:2011-10-28 独月繁星

Struts2权威指南里介绍,并结合笔者在此之前也用过webwork和struts1,不过还是对webwork更熟一 些,好在struts2比较接近webwork,所以学习成本相对不高,struts2的好处就不说了,说说差异吧。

1、相对struts1而言,没有了formbean,表单代码不需要一定要使用struts提供的html标签,一般的 html表单标签照样可以使用,耦合度学习成本都低了很多。想想struts1,不用它自身提供的html标签, 表单元素就不能注入,除action外,还得另外再写一个formbean,而且只能注入java基本数据类型,代码 冗余太多,配置太复杂;

2、之前使用struts1时,除标签使用不习惯外,就是对象的属性注入了,struts2终于可以使用(对象. 属性)的方式进行注入,例:< INPUT name=picture.id>,方便啊!!

3、action不用继承任何父类,也不用实现任何接口,相当于一个简单的对象了,这比webwork高级了 。从页面传下的参数以及从action传到页面的参数,都是通过拦截器完成的。以下是常用的几种实现 action的方式,当然也有其他方式,具体可以看看API。

1) Action可以不用继承任何父类实现任何接口,不用与Servlet API耦合,也不用与struts2 API耦 合可以只是一个普通的pojo,包含getter和setter方法以及execute方法。运用struts2的拦截器机制,负 责解析用户的请求参数,并将请求参数赋值给Action对应的属性。但,这种action类没有与javabean交互 ,没有将业务逻辑操作的结果显示给客户端。

2) 接口Action,这个接口只定义execute方法和5个标准字符串常量: SUCCESS\NONE\ERROR\INPUT\LOGIN,可以简化execute方法的返回值。

3) 继承ActionSupport,ActionSupport是个工具类,已经实现了Action接口,还实现了 Validateable接口,提供了数据校验功能。具体可以看API文档。重写Validateable接口中定义的 validate方法,如果表单输入错误,则将错误添加到ActionSupport的fieldErrors中,然后通过OGNL表达 式输出。validate方法在execute方法之前执行,数据校验错误,请求将被转发到input逻辑试图处。当然 ,也可不重写validate方法,运用配置文件进行数据校验。此外,ActionSupport提供了国际化信息的能 力getText。

4、List元素类型的注入,webwork提供了数组类型的输入,但是对象List的注入不行。举个简单的例 子,上传图片时,用户可能会一次性上传一张,也可能会一次性就上传n张,不确定的对象个数。

1)private List< PICTURE> pictureList; //图片对象list
图片1< INPUT name=pictureList[0].description>
图片2< INPUT name=pictureList[1].description>
输出:< ?xml:namespace prefix = ww />

< ww:iterator value="pictureList">< ww:property value="description"><

 /ww:property>< /ww:iterator>
2)private String[] description;   //字符串数组
描述1< INPUT name=description>
描述2< INPUT name=description>
输出:< ww:iterator value="description">< ww:property><

 /ww:property>< /ww:iterator>

webwork第一种方式是不能自动注入的,但是第二种可以;现在struts2两种方式都能实现,方便!!

5、 Struts标签只认标准的getter和setter方法,而对于boolean类型的属性,eclipse自动生成的get 、set方法是不标准的。比如:定义boolean值属性时是 isXxxxx,用Eclipse生成的getter和setter就是 setXxxxx(boolean isXxxxx),isXxxxx(),而Struts2.0的转换器对boolean的转换用的是setIsXxxxx (boolean isXxxxx), getIsXxxxx();又比如boolean属性名为xxx,Eclipse生成的方法为isXxx ()和 setXxx(boolean xxx),而struts2用户的是getXxx(), setXxx(boolean isXxxxx)。但是Eclipse自动生成 的get、set方法,ibatis能够自动注入,而标准的get、set方法ibatis也能注入。

Struts2权威指南(2)

时间:2011-10-28 独月繁星

6、 初始化spring容器的两个方式:

1) ContextLoaderListener。如果没有contextConfigLocation的配置,spring自动查找WEB-INF路径 下的applicationContext.xml文件。

 

2) Listener是Servlet2.3之后才出现的规范,所以如果Web服务器不支持2.3以上的规范,则 listener无法使用,那么就采用load-on-startup的Servlet,与Listener的作用大致相同。Listener总比 所有的Servlet更优先加载,因此,采用ContextLoaderListener创建ApplicationContext的时机更早。

 

ok,先写这么多吧。因为跟webwork差不多,所以也就没啥感觉了。总之,80%的时候都是用它20%的功 能,其余20%的时候多查查资料也能搞定,总的来说这本Struts 2权威指南还是有一定价值的。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号