Java struts2和struts1对比
来源:互联网 发布:作曲的软件 编辑:程序博客网 时间:2024/06/05 15:07
继承实现不同
- struts1是继承action 抽象类
- struts2继承actionSupport类,actionSupport实现action接口
struts2不是必须实现action接口,只要有execute方法都可以看作action类。
线程安全不同
- struts1是单线程的,只有一个action实例,存在限制
- struts2多线程,每个action使用一个实例,安全不存在问题
servlet依赖不同
- Struts1 Action依赖Servlet API,execute方法中有HttpServletRequest和HttpServletResponse方法
- Struts2 Action 不依赖ServletAPI,允许Action脱离Web容器运行,降低了测试Action的难度
Struts2 Action仍然可以访问HttpServletRequest和HttpServletResponse参数。
但是,大部分时候,Action都无需直接访问 HttpServletRequest和HttpServletResponse。
可测试不同
测试Struts1 Action的一个主要问题是execute方法依赖于Servlet于ServletAPI, 这使得Action仍然的测试要依赖于Web容器。
为了脱离Web容器测试Struts1 的Action, 必须借助于第三方扩展:Struts TestCase,该扩展下包含了系列的Mock对象,从而脱离Web容器测试Struts1的Action类。Struts2Action可以通过初始化,设置属性,调用方法来测试。
封装请求参数不同
- Struts1 使用ActionForm对象封装用户的请求参数,所有的ActionForm 必须继承一个 基类:ActionForm。
普通的JavaBean不能用作ActionForm因此,开发者必须创建大量的ActionForm类封装用户请求参数。虽然Struts1 提供了动态ActionForm 来简化ActionForm 的开发,但依然需要在配置文件中定义ActionForm - Struts2 直接使用Action 属性来封装用户请求属性,避免了开发者需要大量开发ActionForm类的繁琐
实际上,这些属性还可以是包含子属性的Rich对象类型。如果开发者依然怀念Struts1 ActionForm 的模式。
Struts 2 提供了ModelDriven 模式, 可以让开发者使用单独的Model 对象来封装用户请求参数,但该Model对象无须继承任何Struts2基类,是一个POJO,从而 降低了代码污染。
表达式语言方面
- Struts1 整合了JSTL,可以使用JSTL表达式语言。
这种表达式语言有基本对象图遍历,但在对集合和索引属性的支持上则功能不强 - Struts2 可以是用JSTL,但它整合了一种更强大和灵活的表达式语言:OGNL(Object Graph Notation
Language)
因此,Struts2下的表达式语言功能更加强大。
绑定值到视图方面
- Struts1 使用标准JSP机制把对象绑定到视图页面
- Struts2 使用“ValueStack”技术,使标签能够访问值,而不需要把对象和视图页面绑定在一起
类型转换的方面
- Struts 1 ActionForm 属性通常都是String 类型。 Struts1 使用
Commons-Beanutils 进行类型转换,支持基本数据类型和常用对象之间的转换。
数据校验的方面
- Struts1 支持在ActionForm 重写 validate方法手动校验,或者通过整合Commonsalidator框架来完成数据校验。
- Struts2 支持通过重写validator方法进行校验,也支持整合XWork校验框架进行校验
Action执行控制的方面:
Struts1 支持每一个模块对应一个请求处理(既生命周期的概念),但是模块中的所有Action必须共享相同的生命周期。
0 0
- Java struts2和struts1对比
- struts1和struts2对比
- Struts2 和Struts1对比
- Struts1和Struts2对比
- Struts2和Struts1对比
- Struts1 和 Struts2 对比
- struts2 和struts1的对比
- Struts2和Struts1的对比
- Struts2和Struts1的对比
- Struts2和Struts1的对比 .
- Struts2和Struts1的对比
- Struts1和Struts2的区别和对比
- Struts1和Struts2的区别和对比
- Struts1和Struts2的区别和对比
- Struts1和Struts2的区别和对比
- Struts1和Struts2的区别和对比
- Struts1和Struts2的区别和对比
- Struts1和Struts2的区别和对比
- 【C++】延时调用的其中两种实现
- 欢迎使用CSDN-markdown编辑器
- 操作复杂对象结构——访问者模式
- 个人随笔
- android requestWindowFeature使用详解
- Java struts2和struts1对比
- Hadoop分布式文件系统——HDFS详解
- Visual Studio 快捷键
- 文章标题
- 数据对象赋值
- android 使用Fragment实现ViewPager滑动
- hdu 2063 过山车
- matlab在数字图像处理中的小笔记(1)
- MySQL This function has none of DETERMINISTIC, NO SQL...错误1418 的原因分析及解决方法