现在的位置: 首页 > 综合 > 正文

struts1和struts2的区别

2013年10月03日 ⁄ 综合 ⁄ 共 1865字 ⁄ 字号 评论关闭

struts2不是struts1的升级,而是继承的webwork的血统,它吸收了struts1和webwork的优势。

 

1.action类
struts1要求继承一个抽象的基类,而且是使用抽象类编程不是借口

struts2 action类可以实现action接口但是不是必须的,任何有execute标识的POJO对象都可以用作struts2的action对象

 

2. 线程模式
struts1 action是一个单例模式并且必须是线程安全的,单例策略限制了struts1 action的行为,action资源必须是现成安全的或者是同步的.

struts2 action对象为每一个请求产生一个实例,因此没有线程安全的问题.

 

3.servlet依赖
struts1 action 严重依赖于servlet的API,调用action被调用时httpservletrequest和httpservletresponse被传递给execute方法

strurs2 action不依赖于容器,action可以单独被测试,同时如果需要httpservletrequest和httpservletresponse也可以从 ServletActionContext类用对应的get方法获取

 

4.可测试性
struts1 execute方法使用了servlet API很难测试 虽然可以借助struts Testcase提供对象来测试 但是也很麻烦

struts2 Struts2只要实现了一个public String execute()就可以了,这样Action就可以实现脱离Servlet 测试.

 

5.接受输入
struts1使用actionForm对象来接受输入。所有的actionform都必须继承该基类。因为他javaBean不能当做作actionform,导致开发者经常创建多余的类来捕获输入。虽然动态的(Dunabeans)可创建传统的actionform,但是开发者可能是在创建重复的javabean所以仍然会导致冗余

struts2直接使用action属性作为输入属性,消除了对第二个对象的需求,输入属性可能是有自己属性的rich对象类型。action属性能够通过web页面上的taglibs访问。同时struts2也支持actionform模式。rich对象类型,包括业务对象,能够用作输入/输出对象.这种modelDriven特性简化了taglib对POJO输入对象的引用。

 

6.表达式语言

Struts1 整合JSTL,所以它使用JSTL的表达式语言。

Struts 2使用JSTL,但是框架也支持更大和更灵活的表达式,叫做“对象图形符号语言”(OGNL)。

 

7.将值绑定到视图上

Struts 1使用标准JSP机制来绑定对象到页面上下文。

Struts 2使用了“ValueStack”技术标签库可以不用链接你的视图到对象的表现类型访问值。ValueStack策略允许重用视图。

 

8.类型转换

Struts 1的ActionForm属性经常都是String的。Struts 1使用Commons-Beanutils类型转换。转换每一个类,不是每一个实例配置。
Struts 2使用OGNL类型转换。框架包含转换器基本的和共同的对象类型和原始类型。

 

9.验证

Struts 1支持手动验证凭借ActionForm的validate方法,或者通过扩展的公用验证器。类可以有不同的验证上下文未相同的类,但是不能不能包括验证子对象。
Struts 2支持手动验证凭借validate方法和XWork验证框架。Xwork验证框架支持一连串的验证子属性使用的验证了属性类的类型和严正上下文而定义。

 

10action控制的验证
Struts 1支持独立的请求处理器对于每一个模型,但是所有在模型中的Action必须共享同一个生命周期。
Struts 2支持在每一个Action基础上凭借拦截栈创建不同的生命周期。自定义栈可以被创建且使用不同的所需 的Action。

 

 

以上都是copy下来的 然后修改了一下病句

但是我个人觉得在实用上还有几点方便之处,也请有其他看法的朋友各抒己见

1.在做配置的时候大家应该发现 action继承了一个默认的包结构 struts-default 在struts2中配置的action加入了包结构 提高了重用性

2.struts2中请求某一个action中的某一个方法的时候不用在继承DispatchAction 再请求的时候直接在!后面加方法名一起请求

虽然这两点在某些人眼中微乎其微 但是对于我个人还是起到了很大的作用。

 

抱歉!评论已关闭.