`
tianxinet
  • 浏览: 263296 次
  • 性别: Icon_minigender_1
  • 来自: Net
社区版块
存档分类
最新评论

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一起使用。
分享到:
评论
12 楼 downpour 2006-09-06  
其实无须做任何比较,用自己熟悉的技术,并且把它运用成熟就行了。
11 楼 blogbin 2006-09-06  
估计Struts把太多的时间花费在Struts1.0向WebWork整合的工作上。
没有看出Struts2.0提出哪些比WebWork更新或者实用的功能点。

可以关注JBoss Seam,Seam提供一些实用的功能,比如
客户端的Ajax远程调用EJB的方法
集成工作流引擎来实现页面流和业务流程
提供多个可以保持对象状态的上下文(包括page, evnent(request), session, conversation, business和application)

方便开发人员在Seam基础上搭建应用系统,这些至少在现在的Struts和Spring MVC都看不到的。

java虫 写道
没用过webwrok ,

刚开始就学的struts,决定还可以。

期待struts2。。
10 楼 java虫 2006-09-05  
没用过webwrok ,

刚开始就学的struts,决定还可以。

期待struts2。。
9 楼 zidoing 2006-08-31  
可以先关注一下stripes
http://stripes.mc4j.org/confluence/display/stripes/Home
8 楼 Arden 2006-08-31  
Struts2什么时候发布,说8月份,现在都9月份啦,好象感觉jakarta组织发布软件时间总是跟自己宣称的时间要晚很久很久,现在有点越来越对apache没什么好感!
7 楼 Caixiaopig 2006-08-24  
robbin 写道
Caixiaopig 写道
关键是struts2什么时候能够出来,相关的文档,以及周边框架的及时跟进,还有一些成功的案例的支持.目前对我来说也许没有时间等待了,不过真的要是用了struts1.那么要换struts2,估计很困难的,不知道struts2开发组有没有考虑到老用户的移植.


那你还不如现在就用webwork2.2,以后迁移到struts2,无非就是改改package路径和配置文件名称而已。

谢谢提醒~
争取在最短的时间内架构好整体框架,我个人也比较中意webwork,可惜eclipse3.2不支持向导模式的生成,那eclipsework插件为啥不思进取了,呵呵!
6 楼 zelsa 2006-08-23  
tianxinet 写道
zelsa 写道
我没看出Struts2相比Webwork2明显的改进或区别

看的很准    ,因为struts、webwork合并了

还是更期待webwork2.3, 2.4 ..... ,struts2为了照顾struts1用户加入一些struts1的元素,如actionForm等支持,可能反而会不伦不类(还没仔细研究过struts2,只是个人猜测 )。
5 楼 tianxinet 2006-08-23  
zelsa 写道
我没看出Struts2相比Webwork2明显的改进或区别

看的很准    ,因为struts、webwork合并了
4 楼 robbin 2006-08-22  
Caixiaopig 写道
关键是struts2什么时候能够出来,相关的文档,以及周边框架的及时跟进,还有一些成功的案例的支持.目前对我来说也许没有时间等待了,不过真的要是用了struts1.那么要换struts2,估计很困难的,不知道struts2开发组有没有考虑到老用户的移植.


那你还不如现在就用webwork2.2,以后迁移到struts2,无非就是改改package路径和配置文件名称而已。
3 楼 Caixiaopig 2006-08-22  
关键是struts2什么时候能够出来,相关的文档,以及周边框架的及时跟进,还有一些成功的案例的支持.目前对我来说也许没有时间等待了,不过真的要是用了struts1.那么要换struts2,估计很困难的,不知道struts2开发组有没有考虑到老用户的移植.
2 楼 welllove53 2006-08-22  
zelsa 写道
我没看出Struts2相比Webwork2明显的改进或区别

WW2没用过,因为风险和成本的问题。
但是struts1-->struts2至少从框架的名字上就值得去升级。
减少依赖和可测试是肯定要存在的
关注:类型转换和校验的问题。
应该能做到先校验,然后再类型转换吧!

绑定值到页面(view)这个特性不明白,要去瞅瞅了
1 楼 zelsa 2006-08-21  
我没看出Struts2相比Webwork2明显的改进或区别

相关推荐

    struts2的新特性

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

    Struts2 新特性.rar

    Struts2 新特性.rar

    struts2图片上传并预览

    实现图片的上传和图片的预览,主要用strust2实现的

    struts1和struts2的区别

    struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别...

    struts2的基本特性

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

    struts2 最新漏洞 S2-016、S2-017修补方案 .docx

    struts2 最新漏洞 S2-016、S2-017修补方案 .docx

    struts2 总结工程大全

    struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全...

    struts2-core.jar

    struts2-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...

    struts2 资料struts2 资料struts2 资料struts2 资料

    struts2 资料struts2 资料struts2 资料struts2 资料

    Struts2视频教程

    Struts2是一套非常优秀的Java WEB应用框架,实现优雅、功能强大、使用简洁。目前已有大量的企业项目采用Struts2来作为Web框架进行开发,掌握Struts2是每个进行Web开发的Java程序员的一项必备技能。 本视频对Struts2...

    struts2帮助文档

    struts2的新表单标志的使用 struts2与AJAX一 struts2与AJAX二 struts2与AJAX三 struts2中用Spring实现IOC struts2中的零配置与IOC struts2介绍之使用连接标签 struts2入门 struts2进阶学习一 struts2进阶学习二 ...

    struts2案例 struts2 struts2源码

    struts2源码 struts2案例 struts2使用包

    Struts2 Struts2 超好的Struts2 pdf 文档

    Struts2 Struts2 超好的Struts2 pdf 文档 Struts2 Struts2 超好的Struts2 pdf 文档 Struts2.pdf文档

    struts2讲义 struts2讲义struts2讲义struts2讲义struts2讲义

    一个很好的关于Struts2的讲义!struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义

    struts2环境搭建+struts2 新闻发布系统+struts2 留言板

    struts2环境搭建+struts2 新闻发布系统+struts2 留言板 struts2环境搭建:基础框架搭建,简单易上手,适合新手,比你看书强多了,实践源于理论而高于理论,贵在实践 朋友。 struts2 新闻发布系统:struts2+jsp 功能不...

    Struts 2中文帮助文档

    Struts 2是Struts的下一代产品,是在 struts 和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构的差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理...

    struts2例子struts2例子

    struts2例子struts2例子struts2例子struts2例子struts2例子struts2例子struts2例子struts2例子

    Struts2_s2-016&017&ognl2.6.11_patch漏洞补丁

    -- 为修复struts2 s2-016、s2-017漏洞,重写DefaultActionMapper --> <bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="myDefaultActionMapper" class=...

    struts2技术内幕+struts2权威指南

    《Struts2技术内幕:深入解析Struts2架构设计与实现原理》以Struts2的源代码为依托,通过对Struts2的源代码的全面剖析深入探讨了Struts2的架构设计、实现原理、设计理念与设计哲学,对从宏观上和微观上去了解Struts2...

Global site tag (gtag.js) - Google Analytics