读书人

struts1.x 与 struts2 的对照

发布时间: 2012-08-29 08:40:14 作者: rapoo

struts1.x 与 struts2 的对比

1. action 类
?? struts1.x 面向抽象类的编程
?? struts2 面向接口的编程
2. 线程模式
?? struts1.x 是单例模式,一个实例处理所有请求,所以action资源必须是线程安全.
?? strut2 每次请求实例化一个对象,没有线程安全问题.
3. servlet 依赖
?? struts1.x 依赖于servlet API,依赖于web容器
?? struts2 与容器无关
4. 测试
?? struts1.x 依赖于容器
?? struts2 可以通过初始化action或依赖注入来测试
5. 捕获输入
?? struts1.x 用actionForm来捕获输入,而且actionForm必须扩展至基类.也可以用
???动态bean但是那样也是对已存在javabean的重复描述
?? struts2 直接使用action属性作为表单输入,免去对第二个bean的依赖,可以直接通过taglib访问action属性.
6. 表达式语言
?? struts1.x 使用jstl作为表达式语言,具有基本的图形对象移动,但对集合索引属性支持弱.
?? struts2 也使用jstl,但是也支持功能更强大的ognl语言.
7. 将值绑定到页面
?? struts1.x 使用标准jsp机制将对象绑定到jsp页面上下文.
?? struts2 使用值栈技术,用taglib直接访问值,而不需要将对象与页面绑定起来.
8. 类型转换
?? struts1.x 的actionForm属性经常都是String类型.struts1.x使用commons-beanUtils工具转换每一个类.
?? struts2 使用ognl进行转换.
9. 验证
?? struts1.x 支持在actionForm的validator中进行手动验证,或通过commons validator校验.
?? struts2 支持通过validator 和 xwork框架验证.支持子对象效验.
10. action 执行控制
?? struts1.x 每一个请求模块有单独的请求周期,但是模块中的所有action必须共享相同的生命周期.
?? struts2 通过拦截器堆栈为每一个action创建不同的生命周期,堆栈能够根据需要和不同的action一起使用.

读书人网 >软件架构设计

热点推荐