Struts1与Struts2的区别
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一起使用。
转载于:https://www.cnblogs.com/dandan1224/p/6109291.html
Struts1与Struts2的区别相关推荐
- Struts1和Struts2的区别和对比(完整版)
struts2不是struts1的升级,而是继承的webwork的血统,它吸收了struts1和webwork的优势. 先看struts的Action官方注释(struts1.3.8源代码) /** ...
- Struts1和Struts2的区别和对比(完整版)(转)
Struts1和Struts2的区别和对比(完整版)(转) Struts1和Struts2的区别和对比: Action 类: • Struts1要求Action类继承一个抽象基类.Struts1的一 ...
- Struts1和Struts2的区别和对比
2019独角兽企业重金招聘Python工程师标准>>> 类: •Struts1要求Action类继承一个抽象基类.Struts1的一个普遍问题是使用抽象类编程而不是接口. • Str ...
- struts1和struts2的区别2
1) 在Action实现类方面的对比:Struts 1要求Action类继承一个抽象基类:Struts 1的一个具体问题是使用抽象类编程而不是接口.Struts 2 Action类可以实现一个Acti ...
- Struts1、Struts2及SpringMVC对比
Struts2其实并不是一个陌生的Web框架,Struts2是以Webwork的设计思想为核心,吸收了Struts1的优点,因此,可以认为Struts2是Struts1和Webwork结合的产物. 简 ...
- Struts1与Struts2对比分析
Struts2其实并不是一个陌生的Web框架,Struts2是以Webwork的设计思想为核心,吸收了Struts1的优点,因此,可以认为Struts2是Struts1和Webwork结合的产物. 简 ...
- Struts1和Struts2对照
最近学习Struts1和Struts2.好多人.提到非常多的信息. Struts2不从Struts1进化. Struts2的前身WebWork. 呢,看了一些资料,下边就来比較比較. 一.架构分析 S ...
- struts1,struts2,springMVC对比
struts1,struts2,springMVC对比 [参考原文:http://blog.csdn.net/xiaokui008/article/details/8980429] Struts1官方 ...
- Struts1、Struts2、Spring MVC 流程图,对比
Struts1.Struts2.Spring MVC框架的区别 2011-01-23 15:12:32| 分类:Struts | 标签:struts1 struts2 spring mvc框 ...
最新文章
- 如何为HTML容器分配多个类?
- 微信支付开发(2) 微信支付账号体系
- 【数据字典】国标数据字典
- 【Linux系统编程】进程间通信--共享内存
- 技术资料,老吴的博客 很好的 技术博客 里面有很多资料 书籍或者软件安装包...
- java 多线程和并行编程_Java 8中的并行和异步编程
- python写一个路径选择app_django下创建多个app并设置urls方法
- 2020年的风口来了!传统企业如何做数字化转型?
- linux中mac地址路径,MAC地址
- 去中心化交易聚合平台ParaSwap将平台交易gas费成本降低约 20%
- 你真的会用Context么?
- Eclipse 工具的安装和配置
- 材料表征技术书籍-7本
- c语言从入门到放弃之冒泡排序
- 报警c语言程序,PIC单片机警报声C程序
- C语言简单实现14个例题(谭浩强第四版)
- 联想新款小新 Pro 27 一体机 评测 怎么样
- android换肤哪个简单,Android换肤
- 华为鸿蒙麒麟玉兔_华为系统为“鸿蒙”,手机芯片为“麒麟”,这些命名有何含义?...
- flutter Icon一览表,使用字符映射表查看所有图标并使用
热门文章
- div css图片列表实例
- hbm2java和hbm2ddl的使用步骤
- 小巫新闻客户端底部菜单切换实现
- golang中的strings.Compare
- 两个字符串,s,t;把t字符串插入到s字符串中,s字符串有足够的空间存放t字符串
- 【操作系统原理及Linux实践】 四cpu调度scheduling
- (原創) 如何讓P7010外接螢幕支援1440x900(WXGA+)? (NB) (P7010)
- diff 命令,防止遗忘
- Jmeter模拟不同带宽进行测试
- 《编译与反编译技术实战》——第2章编译器实践概述