`
zhuzhiguosnail
  • 浏览: 107907 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Struts2发布新特性

阅读更多
呵呵,看到关于框架选择的帖子,贡献一点东西,如果你有选择struts的意向,还是直接等struts2好了。

Struts2与Struts1的对比

来源:struts2开发组  翻译:tianxinet(胖猴)


Action 类:
• Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。
• Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现 常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。

线程模式:
• Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
• Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)

Servlet 依赖:
• Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法。
• Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。

可测性:
• 测试Struts1 Action的一个主要问题是execute方法暴露了servlet API(这使得测试要依赖于容器)。一个第三方扩展--Struts TestCase--提供了一套Struts1的模拟对象(来进行测试)。
• Struts 2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。

捕获输入:
• Struts1 使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。因为其他JavaBean不能用作ActionForm,开发者经常创建多余的类捕获输入。动态Bean(DynaBeans)可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建)已经存在的JavaBean(仍然会导致有冗余的javabean)。
• Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过web页面上的taglibs访问。Struts2也支持ActionForm模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种ModelDriven 特性简化了taglib对POJO输入对象的引用。

表达式语言:
• Struts1 整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是对集合和索引属性的支持很弱。
• Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言--"Object Graph Notation Language" (OGNL). 

绑定值到页面(view):
• Struts 1使用标准JSP机制把对象绑定到页面中来访问。
• Struts 2 使用 "ValueStack"技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。
 
类型转换:
• Struts 1 ActionForm 属性通常都是String类型。Struts1使用Commons-Beanutils进行类型转换。每个类一个转换器,对每一个实例来说是不可配置的。
• Struts2 使用OGNL进行类型转换。提供基本和常用对象的转换器。

校验: 
• Struts 1支持在ActionForm的validate方法中手动校验,或者通过Commons Validator的扩展来校验。同一个类可以有不同的校验内容,但不能校验子对象。
• Struts2支持通过validate方法和XWork校验框架来进行校验。XWork校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性 

Action执行的控制:
• Struts1支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。
• Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。
0
0
分享到:
评论

相关推荐

    Jakarta Struts编程(中英文双版版电子书part1)

    Struts映射到Model 2设计模式的完整介绍 , 详细论述利用JSP使用Struts的知识,包括Struts标记库 Struts异常处理、验证和登录 Struts应用程序的国际化和本地化 完整论述新StrutsTiles模板库 ...

    欢哉喜哉MyEclipse8.0GA终于发布了——对Struts2支持

    欢哉喜哉MyEclipse8.0GA终于发布了——对Struts2支持 提供下载: MyEclipse8.0GA新特性 http://usc.googlecode.com/files/MyEclipse8.0GA%20What%E2%80%99s%20New.rar Myeclipse8.0GA官方下载地址(请复制下面的...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    8.4 JUnit的新特性 8.4.1 改变测试方法的命名方式 8.4.2 不再继承TestCase 8.4.3 改变初始化和销毁方式 8.4.4 改变异常处理的方式 8.5 小结 第九章 CVS使用指南 9.1 CVS介绍 9.1.1 CVS简介 9.1.2 为什么要使用CVS ...

    Jakarta Struts编程(中英文双版版电子书part2)

    Struts映射到Model 2设计模式的完整介绍 , 详细论述利用JSP使用Struts的知识,包括Struts标记库 Struts异常处理、验证和登录 Struts应用程序的国际化和本地化 完整论述新StrutsTiles模板库 ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    8.4 JUnit的新特性 8.4.1 改变测试方法的命名方式 8.4.2 不再继承TestCase 8.4.3 改变初始化和销毁方式 8.4.4 改变异常处理的方式 8.5 小结 第九章 CVS使用指南 9.1 CVS介绍 9.1.1 CVS简介 9.1.2 为什么要使用CVS ...

    Maven2 的新特性.7z

    Maven2 的新特性.7z 文档选项 打印本页 将此页作为电子邮件发送 级别: 初级 键 胡 (jianhgreat@hotmail.com), 西安交通大学硕士 伟红 胡 (huweih@cn.ibm.com), 工程师,IBM 区域合作伙伴支持...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    8.4 JUnit的新特性 8.4.1 改变测试方法的命名方式 8.4.2 不再继承TestCase 8.4.3 改变初始化和销毁方式 8.4.4 改变异常处理的方式 8.5 小结 第九章 CVS使用指南 9.1 CVS介绍 9.1.1 CVS简介 9.1.2 为什么要使用CVS ...

    web页面模块化异步渲染struts-gpipe.zip

    2,struts.xml配置 name="gweb.groovy.dir" value="biz" />  name="gweb" namespace="/index" extends="gpipe-default">   name="index" class="com.gweb.front.action.Index">   name="success" type...

    annotaction

    3. 可插性支持:熟悉 Struts2 的开发者一定会对其通过插件的方式与包括 Spring 在内的各种常用框架的整 合特性记忆犹新。将相应的插件封装成 JAR 包并放在类路径下,Struts2 运行时便能自动加载这些插件。 现在 ...

    使用Spring更好地处理Struts动作

    依赖注入是一个强大的特性,但是 Spring 框架能够提供更多特性。Spring 支持可插拔的事务管理器,可以给您的事务处理提供更广泛的选择范围。它集成了领先的持久性框架,并且提供一个一致的异常层次结构。Spring 还...

    国内优秀框架ThinkPHP1.5.0新版+最新官方示例程序

    ThinkPHP是一个快速、简单的面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,并且永久免费使用,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。借鉴了国外很多优秀的框架和模式,使用面向对象的开发...

    thinkphp php开源框架

    ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,遵循Apache2开源协议...ThinkPHP遵循Apache2开源许可协议发布,意味着你可以免费使用ThinkPHP,甚至允许把你的ThinkPHP应用采用商业闭源发布。

    Hibernate实战(第2版) 中文版 part2

    随着EJB 3.0和Java Persistence标准的发布,Hibernate也迎来了更加成熟的新版本——Hibernate 3.2。新版本实现了Java Persistence标准,既可以用于流行的开源技术组合(如Spring、Struts和Seam等)。也可以与其他EJB...

    ThinkPHP v5.0.2 完整版

    ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,遵循... ThinkPHP遵循Apache2开源许可协议发布,意味着你可以免费使用ThinkPHP,甚至允许把你基于ThinkPHP开发的应用开源或商业产 品发布/销售。

    外文翻译 stus MVC

    Struts is a set of cooperating classes, servlets, and JSP tags that make up a reusable MVC 2 design. This definition implies that Struts is a framework, rather than a library, but Struts also contains...

    ThinkPHP v3.2.3 完整版.rar

    ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,遵循... ThinkPHP遵循Apache2开源许可协议发布,意味着你可以免费使用ThinkPHP,甚至允许把你基于ThinkPHP开发的应用开源或商业产 品发布/销售。

    Java是一种广泛应用的编程语言,以其跨平台性、面向对象特性和丰富的资源支持而受到开发者们的青睐 以下是关于Java的500字资

    Java是一种广泛应用的编程语言,以其跨平台性、面向对象特性和丰富的资源支持而受到开发者们的青睐。以下是关于Java的500字资源介绍: Java诞生于1995年,由Sun Microsystems公司(后被Oracle公司收购)发布,并...

    ThinkPHP v5.0 正式版.zip

    ThinkPHP遵循Apache2开源许可协议发布,意味着你可以免费使用ThinkPHP,甚至允许把你基于ThinkPHP开发的应用开源或商业产 品发布/销售。 ThinkPHP页面展示 相关阅读 同类推荐:站在常用源码

    Java EE Web开发实例精解完整光盘

    Java EE Web开发实例精解完整光盘 郝玉龙,尹建平 著 清华大学出版社,北京交通大学出版社 2008-03-01 《Java EE Web开发实例...例程6-2:基于Struts构建新闻发布系统 附录A 开发环境的搭建 附录B 知识点索引 参考文献

Global site tag (gtag.js) - Google Analytics