让知识连接你我
投稿赚钱
当前位置: 首页 > 后端开发 > struts2新特性预览,与Struts1的相比
  • 101
  • 微信分享

    扫一扫,在手机上查看

struts2新特性预览,与Struts1的相比

2019.09.17 10:00 266 浏览 举报

  见到有关于框架挑选的帖子,奉献一点物品,假如给你挑选struts的需求,依然立即等struts2好。

  Struts2与Struts1的相比

  Action 类:

  ?Struts1要求Action类承继一个抽像基类。Struts1的一个广泛难题是采用抽象类程序编写而并不是接口。

  ?Struts 2 Action类能够保持一个Action接口,也可保持另外接口,使能选和定制的服务性变成可能。Struts2出示一个ActionSupport基类去保持 常用的接口。Action接口并不是必需的,另外有execute标识的POJO对象都能够用作Struts2的Action对象。

  线程模式:

  ?Struts1 Action是单例模式而且必需是线程安全的,由于仅有Action的一个范例来解决任何的恳请。单例策略限止了Struts1 Action能作的事,而且要在开发设计时非常谨慎。Action资源必需是线程安全的或同步的。

  ?Struts2 Action对象为每一个请求产生一个范例,因而都没有线程安全难题。(事实上,servlet容器给每个恳请产生很多可丢弃的对象,而且不会造成性能和垃圾回收难题)

  Servlet 依赖:

  ?Struts1 Action 依赖于Servlet API ,由于当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法。

  ?Struts 2 Action不依赖于容器,准许Action脱离容器单独被检测。假如必须,Struts2 Action依然能够浏览初始的request和response。可是,另外的元素减少可能消除了立即浏览HttpServetRequest 和 HttpServletResponse的必要性。

  可测性:

  ?检测Struts1 Action的一个主要难题是execute方法泄露了servlet API(这使得检测要依赖于容器)。一个第三方扩大--Struts TestCase--出示了一套Struts1的模拟对象(来进行检测)。

  ?Struts 2 Action能够通过初始化、设置属性、调用方法来检测,“依赖注入”支持也使检测更更易。

  捕获输入:

  ?Struts1 采用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。因为其他JavaBean不能用作ActionForm,开发者经常创建多余的类捕获输入。动态Bean(DynaBeans)可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建)已经存在的JavaBean(仍然会导致有冗余的javabean)。

  ?Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过web页面上的taglibs访问。Struts2也支持ActionForm模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种ModelDriven 特性简化了taglib对POJO输入对象的引用。

  表达式语言:

  ?Struts1 整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是对集合和索引属性的支持很弱。

  ?Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言--"Object Graph Notation Language" (OGNL).

  绑定值到页面(view):

  Struts 1使用标准JSP机制把对象绑定到页面中来访问。

  ?Struts 2 使用 "ValueStack"技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。

  类型转换:

  ?Struts 1 ActionForm 属性通常都是String类型。Struts1使用Commons-Beanutils进行类型转换。每个类一个转换器,对每一个实例来说是不可配置的。

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

  校验:

  ?Struts 1支持在ActionForm的validate方法中手动校验,或者通过Commons Validator的扩展来校验。同一个类可以有不同的校验内容,但不能校验子对象。

  ?Struts2支持通过validate方法和XWork校验框架来进行校验。XWork校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性

  Action执行的控制:

  ?Struts1支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。

  ?Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。


本文首次发布于开创者素材 ,转载请注明出处,谢谢合作!

相关文章推荐