STRUTS系列之 Struts1 和 Struts2的区别

Action

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

Struts2 的Action类实现了一个Action接口,连同其他接口一起来实现可选择和自定义的服务。Struts2 提供了ActionSupport基类来实现一般使用的接口。

线程模型

Struts1 的Action是单例类,所以要考虑线程安全的问题。

Struts2 为每一个请求实例化一个Action类对象,所以不会出现线程安全的问题。

Servlet依赖

Struts1 的Action类依赖Servlet,需要以HttpServletRequest和HttpServletResponse作为参数传递给execute方法。

Struts2 的Action和容器无关,Servlet上下文被表现为简单的Maps,允许Action被独立的测试。

表达式语言

Struts1 使用JSTL,对集合和索引属性的支持很弱。

Struts2 不仅支持JSTL,还支持一个更强大和灵活的语言OGNL。

类型转换

Struts1 的ActionForm属性经常是String,使用Commins-Beanutils进行类型转换。

Struts2 使用OGNL进行类型转换,提供基本和常用对象的转换器。

验证

Struts1 在ActionForm的Validate的方法中手动脚丫,或者通过Commons Validator的扩展校验,同一个类可以有不同的校验内容。

Struts2 支持Validate方法,也支持XWork校验框架进行校验。XWork校验框架使用为属性类类型定义的校验和内容校验。

测试

Struts1 测试依赖容器,可以用Struts TestCase测试。

Struts2 的Action通过初始化,设置属性,调用方法来测试。

Action生命周期

Struts1 每一个模块有单独的生命周期,但模块中的所有Action有相同的生命周期。

Struts2 通过拦截器为每个Action创建不同的生命周期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值