`
king_tt
  • 浏览: 2110208 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Struts2 新特性

 
阅读更多
Struts2与Struts1的对比

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一起使用。

来源:struts2开发组 翻译:tianxinet(胖猴)
http://forum.javaeye.com/viewtopic.php?p=134299#134299
分享到:
评论

相关推荐

    struts2新特性预览

    struts2新特性预览struts2新特性预览struts2新特性预览

    struts2的新特性

    struts2的新特性 struts2的新特性 struts2的新特性

    Struts2 新特性.rar

    Struts2 新特性.rar

    struts2的基本特性

    介绍了Strust2的基本特性及其与其它Web开发框架的比较。

    Struts2实战.pdf

    主要内容包括Action、Result、Interceptor等框架组件,基于注解的配置选项等新特征,Struts 2插件 FreeMarker,如何从Struts 1和WebWork 2迁移到Struts 2,Ajax标签、Spring框架集成等新特性。《Struts 2实战》适合...

    使用Struts2开发Java_Web应用程序

    第一章 Struts2 概览 Struts 是什么? Struts 2 是一个雅致的,可扩展的,用来建立企业级Java Web应用程序的框架。 Struts 2 不但注重程序的开发过程,更注重部署和后期维护。...Struts2 的特性有那些?

    Struts2 in action中文版

    6.7.2 Struts 2中常用的表达式语言特性 131 6.7.3 表达式语言的高级特性 135 6.8 小结 137 第7章 UI组件标签 139 7.1 为什么需要UI组件标签 139 7.2 标签、模板和主题 144 7.2.1 标签 146 7.2.2 模板 146 7.2.3 ...

    Struts2_API.rar_API_struts2_struts2 api_struts2 api chm_struts2文

    struts2-api帮助文档!详细介绍了struts2的一些新特性!收藏绝对不会后悔!!!!

    深入浅出struts2

    为了达成这一目标,Struts2中提供了很多新特性,比如智能的默认设置、annotation的使用以及“惯例重于配置”原则的应用,而这一切都大大减少了XML配置。Struts2中的Action都是POJO,这一方面增强了Action本身的可...

    struts2 in action

    主要内容包括Action、Result、Interceptor等框架组件,基于注解的配置选项等新特征,Struts 2插件 FreeMarker,如何从Struts 1和WebWork 2迁移到Struts 2,Ajax标签、Spring框架集成等新特性。《Struts 2实战》适合...

    深入浅出Struts2(附源码)

    本书是广受赞誉的Struts 2优秀教程,它全面而深入地阐述了Struts 2的各个特性,并指导开发人员如何根据遇到的问题对症下药,选择使用最合适的特性。作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,...

    struts2 in action 中文版

    新版本Struts 2包含了很多架构上的变更,这些变更使Struts 2的MVC模式更加清晰、整洁,使开发流程更加有效。 本书由资深开发人员撰写,秉承了“实战”系列的优良品质,被读者誉为“终极权威参考”。书中首先介绍了...

    struts2 PPT教程(黎活明)

    struts2 PPT教程 黎活明,描述了struts的新特性

    Struts2中文(MAX教程)-chm格式

    这是struts2.0的中文教程文档,详细介绍了struts2.0的新特性,并有实例教授,便于理解,使用初学者尝试,也适用于高手技巧知识点查询

    Struts2与Struts1的对比

    本文档对于Struts2与Struts1的一些特性的对比

    struts2-2.3.15 jar包

    struts2 搭建环境所需的jar包。struts2有别于struts1,是在webwork,struts1的基础上发展而来。更多的继承了webwork的特性。

    轻量级Java EE企业应用实战 (第4版) Struts 2+Spring 4+Hibernate整合开发

    本书还全面介绍了Servlet 3.1的新特性,以及Tomcat 8.0的配置和用法,本书的示例也应该在Tomcat 8.0上运行。  《轻量级Java EE企业应用实战:Struts2+Spring4+Hibernate整合开发(第4版)》重点介绍如何整合Struts ...

    struts2中的OGNL.ppt

    Struts2的一个关键特性就是它可以对Action携带的数据进行读写访问,例如在前面我们在表单中使用user.username指定数据传递给Action的user对象的username属性,在元素中使用user.username来获取用户的名字,这是通过...

Global site tag (gtag.js) - Google Analytics