文档章节

Struts1.2与Struts2的区别

乐在克里特
 乐在克里特
发布于 2017/02/23 09:50
字数 2384
阅读 7
收藏 0

struts1.2和struts2最大的不同是,struts2集成了Webwork。

区别相当大,2.0改进很多,整合webwork,去掉了一些不常用得标签,

struts2.x是在webwork2的基础上构建的,集成了大量的东西,像什么拦截器,校验框架等,相当复杂,struts1.x相对来说就显得小得多了,东西就那么几个。

特性
Struts 1.2
Struts 2.0

Action类
Struts 1要求Action类要扩展自一个抽象基类。Struts 1的一个共有的问题是面向抽象类编程而不是面向接口编程。
Struts 2的Action类实现了一个Action接口,连同其他接口一起来实现可选择和自定义的服务。Struts 2提供一个名叫ActionSupport的基类来实现一般使用的接口。虽然,Action接口不是必须的。任何使用execute方法的POJO对象可以被当作Struts 2的Action对象来使用。

线程模型
Struts 1 Action类是单例类,因为只有一个示例来控制所有的请求。单例类策略造成了一定的限制幷且给开发带来了额外的烦恼。Action资源必须是线程安全或者同步的。
Struts 2 Action对象为每一个请求都实例化对象,所以没有线程安全的问题。(实践中,servlet容器产生许多丢弃的对象对于每一个请求,多于一个的对象并不影响垃圾收集)

Servlet 依赖
Struts 1的Action类依赖于servlet API以为HttpServletRequest和HttpServletResponse作为参数传给execute方法当Action被调用时。
Struts 2的Action不和容器有关。Servlet上下文被表现为简单的Maps,允许Action被独立的测试。Struts 2的Action可以访问最初的请求和相应,如果需要的话。然而,其他的架构元素减少或者排除直接访问HttpServletRequest或者HttpServletResponse的需要。

易测性
测试Struts 1的主要障碍是execute方法暴露了Servlet API。第三方的扩展,Struts测试用例,提供Struts 1的集合对象。
Struts 2的Action可以通过实例化Action来测试,设置属性,然后调用方法。依赖注入的支持也是测试变得更简单。

接受输入
Struts 1使用ActionForm对象来捕获输入。象Action一样,所有的ActionForm必须扩展基类。因为其他的JavaBean不能作为ActionForm使用,开发者经常创建多余的类来捕获输入。DynaBeans可以被用来作为替代ActionForm的类来创建。但是开发者可以重新描述已经存在的JavaBean。
Struts 2 Action属性作为输入属性,排除第二个输入对象的需要。输入属性可能有丰富的对象类型这些类型有他们自己的属性。Action的属性可以通过标签库来访问。Struts 2也支持ActionForm形式。丰富的对象类型,包含业务或者域对象,可以被当作输入或者输出对象来使用。糢型驱动特性简化标签对POJO输入对象的引用。

表达式语言

Struts 1整和JSTL,所以它使用JSTL的表达式语言。表达式语言有基本的图形对象移动,但是相对很弱的集合和被索引的属性支持。
Struts 2使用JSTL,但是框架也支持更强大和更灵活的表达式,叫做“对象图形符号语言”(OGNL)。

将值绑定要视图上
Struts 1使用标準JSP机製来绑定对象到页面上下文。
Struts 2使用“ValueStack”技术为了标签库可以不用链接你的视图到对象的表现类型来访问值。ValueStack策略允许重用视图。

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

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

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

 

特性

Struts 1

Struts 2

Action

Struts 1要求Action类要扩展自一个抽象基类。Struts 1的一个共有的问题是面向抽象类编程而不是面向接口编程。

Struts 2Action类实现了一个Action接口,连同其他接口一起麳实现可选择和自定义的服务。Struts 2提供一个名叫ActionSupport的基类麳实现一般使用的接口。虽然,Action接口不是必须的。任何使用execute方法的POJO对象可以被当作Struts 2Action对象麳使用。

线程模型

Struts 1 Action类是单例类,因为只有一个示例麳控制所有的请求。单例类策略造成了一定的限制幷且给开发带来了额外的烦恼。Action资源必须是线程安全或者同步的。

Struts 2 Action对象为每一个请求都实例化对象,所以没有线程安全的问题。(实践中,servlet容器产生许多丢弃的对象对于每一个请求,多于一个的对象并不影响垃圾收集)

Servlet依赖

Struts 1Action类依赖于servlet API以为HttpServletRequestHttpServletResponse作为参数传给execute方法当Action被调用时。

Struts 2Action不和容器有关。Servlet上下文被表现为简单的Maps,允许Action被独立的测试。Struts 2Action可以访问最初的请求和相应,如果需要的话。然而,其他的架构元素减少或者排除直接访问HttpServletRequest或者HttpServletResponse的需要。

易测性

测试Struts 1的主要障碍是execute方法暴露了Servlet API。第三方的扩展,Struts测试用例,提供Struts 1的集合对象。

Struts 2Action可以通过实例化Action麳测试,设置属性,然后调用方法。依赖注入的支持也是测试变得更简单。

接受输入

Struts 1使用ActionForm对象麳捕获输入。象Action一样,所有的ActionForm必须扩展基类。因为其他的JavaBean不能作为ActionForm使用,开发者经常创建多余的类麳捕获输入。DynaBeans可以被用来作为替代ActionForm的类麳创建。但是开发者可以重新描述已经存在的JavaBean

Struts 2 Action属性作为输入属性,排除第二个输入对象的需要。输入属性可能有丰富的对象类型这些类型有他们自己的属性。Action的属性可以通过标签库麳访问。Struts 2也支持ActionForm形式。丰富的对象类型,包含业务或者域对象,可以被当作输入或者输出对象麳使用。糢型驱动特性简化标签对POJO输入对象的引用。

表达式语言

Struts 1整和JSTL,所以它使用JSTL的表达式语言。表达式语言有基本的图形对象移动,但是相对很弱的集合和被索引的属性支持。

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

将值绑定要视图上

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

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

类型转换

Struts 1ActionForm属性经常都是String的。Struts 1使用Commons-Beanutils麳类型转换。转换每一个类,幷不是为每一个实例配置。

Struts 2使用OGNL麳类型转换。框架包含转换器麳为基本的和共同的对象类型和原始类型。

验证

Struts 1支持手动验证凭借ActionFormvalidate方法,或者通过扩展的公用验证器。类可以有不同的验证上下文麳未相同的类,但是不能不能包括验证子对象。

Struts 2支持手动验证凭藉validate方法和XWork验证框架。Xwork验证框架支持一连串的验证子属性使用的验证为了属性类的类型和严正上下文而定义。

Action执行的控制

Struts 1支持独立的请求处理器对于每一个模型,但是所有在模型中的Action必须共享同一个生命周期。

Struts 2支持在每一个Action基础上凭借拦截栈创建不同的生命周期。自定义栈可以被创建幷且使用不同的所需 Action

 

http://www.cnblogs.com/jerryxing/archive/2012/04/23/2467297.html

另外可以简单看看:

http://blog.sina.com.cn/s/blog_8d395eef01010w92.html

© 著作权归作者所有

共有 人打赏支持
乐在克里特
粉丝 15
博文 268
码字总数 394729
作品 0
杭州
程序员
struts1.2 中parameter之后,继承dispatchaction可以一个action多处理。那struts2中什么属性有这个功能?该继承哪个类?

struts1.2 中parameter属性之后,继承dispatchaction可以一个action多处理。 那struts2中什么属性有这个功能?该继承哪个类?

qjm201000
2013/07/31
316
0
遇到一个很二的sturts2 命名空间问题

今天想再从新搞搞struts2 结果弄得一塌糊涂,终究其问题原因是命名空间的错。 三。命名空间配置 1.不使用命名空间的方式: struts配置: <struts> <include file="struts-default.xml" /> <...

dml124
2012/09/03
0
2
Spring MVC与Struts比较

Struts2与SpringMVC都是比较优秀,也是被广泛使用的Web开发框架,那么他们之间有什么区别呢?今天小博老师就跟大家来讨论下这个问题。 Struts工作流程图 Struts与Spring之间主要有以下几点区...

博为峰教研组
2016/11/24
3
0
求教fastm如何配置,使用的是struts1、spring、ibatis框架

初学fastm,基于struts1.2、spring、ibatis2整合框架开发,要用到fastm,但由于fastm资料极少,在此,向各位大大请教,在ssi框架中,要怎样配置fastm?需要在哪些配置文件中配置?需要哪些j...

a沐
2013/03/13
328
1
Struts2和Spring MVC的区别有哪些?

Spring MVC是Struts2的改进吗?使用两者的区别大吗? Struts2和Spring MVC的主要区别有哪些?

文心雕码
2014/04/05
3K
3

没有更多内容

加载失败,请刷新页面

加载更多

WinDbg

参考来自:http://www.cnit.net.cn/?id=225 SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols ctrl + d to open dump_file Microsoft (R) Windows Debugger Version 6.12.0002.633......

xueyuse0012
今天
2
0
OSChina 周五乱弹 —— 想不想把92年的萝莉退货

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @罗马的王:分享松澤由美的单曲《地球ぎ》 很久没看圣斗士星矢了 《地球ぎ》- 松澤由美 手机党少年们想听歌,请使劲儿戳(这里) @开源中国首...

小小编辑
今天
14
1
springBoot条件配置

本篇介绍下,如何通过springboot的条件配置,控制Bean的创建 介绍下开发环境 JDK版本1.8 springboot版本是1.5.2 开发工具为 intellij idea(2018.2) 开发环境为 15款MacBook Pro 前言 很多时候,...

贺小五
今天
1
0
javascript source map 的使用

之前发现VS.NET会为压缩的js文添加一个与文件名同名的.map文件,一直没有搞懂他是用来做什么的,直接删除掉运行时浏览器又会报错,后来google了一直才真正搞懂了这个小小的map文件背后的巨大...

粒子数反转
昨天
1
0
谈谈如何学Linux和它在如今社会的影响

昨天,还在农耕脑力社会,今天已经人工智能技术、大数据、信息技术的科技社会了,高速开展并迅速浸透到当今科技社会的各个方面,Linux日益成为人们信息时代的到来,更加考验我们对信息的处理程...

linux-tao
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部