Struts 2 和Struts 1对比

首先从名字上感觉,struts1和struts2只是一个字之差,我第一次感觉差不多,可是用过之后才知道,差别不是一点点.

  1. 从Action实现类的对比.struts1要求所有action必须继承一个抽象类,而struts2的action类可以实现一个action的接口,也可以实现其他接口.struts2提供一个actionsupport基类去实现常用接口,其实action接口也不是必须实现的,只需要某个包含一个execute的方法并返回一个字符串的pojo类都可以用做struts2的action.
  2. 线程模式的对比.struts1的action要求每个action类都是线程安全的,并且在整个程序中只存在一个该类的实例(单例),或者为了实现同步,必须将某个action同步.struts2的action对象为每一个请求产生一个实例,所以不存在线程安全问题.
  3. 侵入方面.struts1是一个侵入式的设计,他依赖于servlet api,以为struts1中的action的execute方法需要httpservletrequest和httpservletresponse的参数.从而struts1的action必须的依赖与web容器来运行.struts2的action不在依赖servlet api 从而可以脱离web容器来运行,从而降低了action测试的难度.
  4. 从第三点看来,struts1的action很难测试,为了脱离web容器测试struts1的action,必须借助与第三方扩展Struts TestCase而struts2可以脱离web容器运行,测试就显的容易多了,可以通过初始化,设置属性来测试.调用方法.
  5. 请求参数封装,struts1使用actionform对象封装用户请求参数,所有的actionfrom必须继承一个基类,普通的javabean不能用做一个actionform,而struts2是直接使用action的属性来封装用户请求参数的,避免了多个actionform的烦琐.
  6. 表达式语言,struts1整合了jstl,因此可以使用jstl表达式语言.但它对集合和索引属性的支持上功能不强,struts2支持一中更强大和灵活的表达式语言,OGNL(Object Graph Notation Language).
  7. 类型转换,struts1 actionform属性通常都是string类型.struts1使用commons-beanutils进行类型转换,每个类一个转换器,转换器不可配置,struts2使用OGNL进行类型转换,支持基本数据类型和常用对象类型之间的转换.
  8. 数据验证,struts1支持在actionform重写validate方法,或者通过commons alidator框架来完成数据验证,struts2支持通过重写validate方法,也支持整合xwork校验框架进行校验.
  9. action执行控制,生命周期,struts1中每个模块中的action的生命周期相同,struts2支持通过拦截器堆栈(Interceprot Stacks)为每一个action创建不同的生命周期.开发者可以根据需要创建相应的堆栈,从而和不同的action一起使用.

以上只是区别的主要部分,联系他们都是mvc框架,一个老一个新,都以控制为住.老的是侵入式设计,新的是非侵入式设计.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值