`
tianxinet
  • 浏览: 263097 次
  • 性别: 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一起使用。
分享到:
评论
52 楼 jacky9881 2007-06-22  
世上本无事,庸人自扰之!!哈哈
51 楼 dudu88656 2007-06-14  
还没用过STRUTS2 本人倒是用过JSF,SUN标准版,还不错,就是常用的组件太少了,基本的文件上传组件都没有。页面格式控制也不太好用,太费劲了.
50 楼 xianglg 2007-06-07  
只是现在网上资料太少,学习起来只能靠自己!
49 楼 a3mao 2007-06-04  
xfli333 写道
用了下strtus2,感觉超级不爽,UI太难用了(根本不能用js取日期的值),布局也不爽,用hidden取出的日期型居然是这样"07-06-06",把我的年 小时,分全丢了,kao。怎么把ww2改成这德行了。



那你接着用webwor2不就的了
48 楼 a3mao 2007-06-04  
用过webwork2 感觉不错,支持
47 楼 xfli333 2007-06-04  
用了下strtus2,感觉超级不爽,UI太难用了(根本不能用js取日期的值),布局也不爽,用hidden取出的日期型居然是这样"07-06-06",把我的年 小时,分全丢了,kao。怎么把ww2改成这德行了。
46 楼 ivanisme 2007-06-01  
yanbory 写道
正如Rod Johnson所总结的那样,如果Struts有WW2的优点,同时也加入了IoC,AOP的支持的话,那么没有理由不选择它。

题外话:感觉这个论坛的有很多亮点,特别是这个登陆方式,很有创意。看看哪位大大能不能秉承Java开源的优良传统,贡献出一些精华来给大家一起分享。呵呵。


看下Prototype + PWC``
45 楼 chenxu 2007-03-11  
不错,值得期待
44 楼 lighter 2006-12-31  
zhujunli0310 写道
我现在用的是struts1.2挺好的,但是看了2.0版有感觉到有写新鲜感,但是我感觉在struts1.2成熟的基础上有了2.0是一中进步吧。
   我没有用过2.0,但是可能开发起来比较简单一点了吧???

什么在struts1.2成熟的基础上有了2.0,struts2.0根本上就是webwork2改造而来的,改动很少很少...
43 楼 zhujunli0310 2006-12-31  
我现在用的是struts1.2挺好的,但是看了2.0版有感觉到有写新鲜感,但是我感觉在struts1.2成熟的基础上有了2.0是一中进步吧。
   我没有用过2.0,但是可能开发起来比较简单一点了吧???
42 楼 jzx19770812 2006-12-20  
没有用过webwork,不过看上去struts2很多功能都挺吸引人的,不过又得学ognl了,唉,学无止境,努力努力
41 楼 ahuaxuan 2006-12-16  
cryolite 写道
(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)

这个结论是怎么来的?


去看看分代垃圾收集器吧
40 楼 andyao 2006-11-27  
yanbory 写道
正如Rod Johnson所总结的那样,如果Struts有WW2的优点,同时也加入了IoC,AOP的支持的话,那么没有理由不选择它。

题外话:感觉这个论坛的有很多亮点,特别是这个登陆方式,很有创意。看看哪位大大能不能秉承Java开源的优良传统,贡献出一些精华来给大家一起分享。呵呵。


不是java写的, ROR架构的
39 楼 为你而来 2006-11-14  
struts2已经发布,暂时用不上,了解一下先
38 楼 tianxinet 2006-11-11  
喏,struts2已经发布,形势已经明朗,有必要翻翻这个老贴子,对struts2做个基本了解了。
在技术上struts2的轻量级版本(struts ti)基本等同与ww2,架构、核心相同。
37 楼 leobluewing 2006-11-08  
ctguharry 写道
foxgem 写道
基本上spring mvc就够用了。


好象不是很方便
如果我在插入一条数据前先要判断数据库中是否已经有了这条数据
如果有了就在页面上给予相应的提示
用spring mvc怎么做?
request.setAttribut()然后在页面上在getAttribut()吗??
这样好麻烦哦


try ajax
36 楼 foxgem 2006-11-07  
ctguharry 写道
foxgem 写道
基本上spring mvc就够用了。


好象不是很方便
如果我在插入一条数据前先要判断数据库中是否已经有了这条数据
如果有了就在页面上给予相应的提示
用spring mvc怎么做?
request.setAttribut()然后在页面上在getAttribut()吗??
这样好麻烦哦

如果你用过struts 1.1的话,那么做法是类似的。就是验证之后,再把错误消息放到msg中。
你说的也是一种方法,但是spring mvc中提供了BindException,你可以将它和struts 1.1的actionErrors类比。
35 楼 daquan198163 2006-11-02  
ctguharry 写道
foxgem 写道
基本上spring mvc就够用了。


好象不是很方便
如果我在插入一条数据前先要判断数据库中是否已经有了这条数据
如果有了就在页面上给予相应的提示
用spring mvc怎么做?
request.setAttribut()然后在页面上在getAttribut()吗??
这样好麻烦哦

SpringMVC也许易用性上不太好,但灵活性极高
你的问题可以参考这里
http://www.springframework.org/docs/MVC-step-by-step/Spring-MVC-step-by-step-Part-3.html
在页面搜索“This is a very simple JavaBean”开始看就行了
34 楼 yanbory 2006-11-02  
正如Rod Johnson所总结的那样,如果Struts有WW2的优点,同时也加入了IoC,AOP的支持的话,那么没有理由不选择它。

题外话:感觉这个论坛的有很多亮点,特别是这个登陆方式,很有创意。看看哪位大大能不能秉承Java开源的优良传统,贡献出一些精华来给大家一起分享。呵呵。
33 楼 hiwzg 2006-10-27  
没有用过WW,照这份新特性上看,Struts2有很多值得期待的地方,真的是值得期待:)

不过,各位楼主都已经说了Struts2是WW的贴皮版本,所以,想以后转到Struts2上的话,可以先看看WW。

相关推荐

    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