struts1 struts2区别

Struts2 相对于Struts1是一个新框架,Struts2并不是Struts1的升级版,准确的来说Struts2是由webwork衍生出来的一个新框架,是webwork的升级

Struts2框架贯穿了java开发的整个周期,从开发到发布及维护的整个过程。


http://blog.csdn.net/minxwy/article/details/20210661 参考的这篇文章


Struts1和Struts2的区别

  action类

Struts1要求action类继承一个抽象基类,Struts1是抽象类编程不是接口

(抽象基类和接口的区别,

抽象基类可以定义成员变量,可以定义成员函数,还可以定义抽象成员函数。 但是,抽象基类不能被实例化。

      一个继承抽象基类的类可以部分或全部实现父类中的抽象成员函数。如果全部继承,那么这个类就是一个普通类,可以实例化;如果只部分继承,那这个类还是抽象类,不能被实例化。

接口中不能定义成员变量,不能定义成员函数(带函数体的函数),只能定义抽象函数(abstract关键字可选)。实现一个接口必须实现接口的所有方法,接口不能被实例化。

Struts2 action可以实现一个action接口也可以实现其他接口,Struts2提供了一个actionSupport基类去实现常用接口,action接口不是必须的,任何有execute标识的pojo对象都可以用作struts2的action对象


线程模式

Struts1 action是单例模式,并且必须是线程安全的,因为仅有action的一个实例来处理所有的请求,单例策略现在了action能做的事情,在开发时要小心,action资源必须是线程安全同步的,因此他存在线程完全问题

Struts2 action是线程安全的,每一个action会为每次请求创建一个实例,所以不存在安全问题


servlet的依赖

Struts1 action依赖于servlet api,因为当一个action被调用时 request和response被传递给execute方法

Struts2 不依赖于容器,允许action脱离容器单独被测试(例如junit单元测试,可以直接测试脱离了容器)


捕获输入

Struts1 使用actionform对象捕获输入,所有的actionform必须继承一个基类,因为其他的javabean不能作用actionform,开发者经常创建多余的类捕获输入,这样可能会导致创建了已存在的javabean,会导致冗余

Struts2直接使用action属性作为输入属性,消除了对第二个对象,也就是我们传建bean的需求,对象类型包括业务对象都能作为输入输出对象


语言表达式

Struts1 整合了jstl,使用jstlel 这种el对基本对象遍历,但是对集合索引属性支持很弱

Struts2 可以使用jstl,但更支持ognl


绑定值到页面

struts1使用了标准的jsp机制把对象绑定到页面中来访问

struts2 能够用taglib访问值而不需要页面(view)和对象绑定起来


action执行控制

struts1支持每一个模块有单独的生命周期,但是每个模块所有的action必须共享相同的生命周期

struts2 支持通过拦截器堆栈为每个action创建不同的生命周期


流程图

struts1

客户端发起request请求,被struts1的actionservlet接受,然后actionservlet根据status.xml里的映射文件找到对应的action,找不到就返回500错误到页面,找到就到action中的excute()方法去执行相应的逻辑,然后通过actionforward跳到相应的页面


struts2

客户端发起request请求,

interceptor做一些拦截的初始工作

当外部的httpservleterequest 到来 初始到servlet容器传递给一个标准的过滤链

调用fiterdispatecher过滤器查找相应的actionMapper

如果找到了相应的mapper,则把控制权限交给actionproxy 代理器

actionproxy会通过configurationManager来查找strutsx.xml

下一步通过actioninvocation来辅助命令模式的实现(包括调用一些拦截Interceptor框架在调用action之前)

    一旦action返回,会查找相应的result,result类型可以是jsp或者freemark等,这些组件和actionmapper一起返回给url

响应返回是通过我们web.xml配置的过滤器

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值