转载(没看懂)

Action 类

  ◆Struts1要求Action类继承一个抽象基类org.apache.struts.action.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的必要性 (HttpServletRequest) ActionContext.getContext().get(StrutsStatics.HTTP_REQUEST)。

可测性

  ◆测试Struts1 Action的一个主要问题是execute方法暴露了servlet API(这使得测试要依赖于容器)。一个第三方扩展--Struts TestCase--提供了一套Struts1的模拟对象(来进行测试)。

  ◆Struts 2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。

捕获输入

  ◆Struts1 使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类org.apache.struts.action.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 Navigation 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一起使用。

转载于:https://www.cnblogs.com/sara-gcj/p/3307463.html

Struts2和Struts1的不同相关推荐

  1. Struts2与Struts1的对比

    Struts2与Struts1的对比 Action 类: • Struts1要求Action类继承一个抽象基类.Struts1的一个普遍问题是使用抽象类编程而不是接口. • Struts 2 Acti ...

  2. Struts2和Struts1.x的全面比较

    Struts2和Struts1.x的全面比较 为了对Struts2和Strtus1.x进行全面的比较,让读者了解这两种框架各自的优缺点,以便于在自己的项目中,根据实际情况,选择合适的框架,对它们两者进 ...

  3. Struts2与Struts1的对比学习(一)

    写在前面: Struts1官方已经停止更新,现在用的也比较少,但是了解Struts1可以帮助我们更好的理解Struts2. 我们不能简单的把Struts2理解为Struts1的升级,甚至可以说这样理解 ...

  4. Struts2和Struts1.x的全面比较一

    转载自:http://www.blogjava.net/sterning/archive/2007/07/17/130892.html 特性 Struts1.x Struts2 Action类 Str ...

  5. struts2与struts1整合,java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory

    原因:我往项目的WEB-INF/lib中导入了struts2基本的包,还有struts1的core包,以及struts2-strut1-plugin的包,但是没有导入commons-loggin-1. ...

  6. Struts2与Struts1的区别

    Struts2是基于WebWork的一个全新框架. 不过有了Struts1的基础,学Struts2更方便. Struts2主要改进是取代了Struts1的Servlet和Action. Struts2 ...

  7. struts2和struts1认识

    1.Struts 2基本流程 Struts 2框架本身可以大致分3部分:核心控制器FilterDispatcher.业务总监Action与用户实现企业业务逻辑组件. 核心控制器FilterDispat ...

  8. Struts2前身Struts1是如何转起来的呢

    Struts1运行原理: 在启动时通过前端总控制器ActionServlet加载struts-config.xml并进行解析当用户在jsp页面发送请求被struts1的核心控制器ActionServl ...

  9. Struts1和Struts2对照

    最近学习Struts1和Struts2.好多人.提到非常多的信息. Struts2不从Struts1进化. Struts2的前身WebWork. 呢,看了一些资料,下边就来比較比較. 一.架构分析 S ...

最新文章

  1. Java 之String、StringBuffer 和 StringBuilder 三者区别介绍
  2. 提升码农90%学习效率的10大学习工具
  3. matlab-基础 size 获取矩阵的行数与列数
  4. php中请写出定义变量的两种方法,php定义变量几种
  5. Skip宏块与Direct预测模式浅析
  6. 字节跳动测试开发4轮面试_字节跳动测试开发工程师一面总结
  7. JavaScript-函数
  8. 电商美工中秋节电商淘宝页面设计模板素材,临摹参考框架
  9. linux 创建交换文件格式,Linux系统下的交换分区和交换文件的含义 (创建交换分区文件基本文件的swap)...
  10. CppCheck C++静态代码检查工具在Visual Studio(VS)下的配置和使用
  11. 智能语言处理之依存树计算句子结构相似度计算
  12. 谈谈 MVX 中的 Model
  13. jsp内置对象-session对象
  14. 4ARM-PEG-DA 4Arm-PEG-ACRL 四臂PEG丙烯酸酯
  15. Foxdisk11-小字库显示汉字2
  16. windows11 数字键无法使用 修复办法 已解决
  17. Firefox的安装
  18. font-variant-numeric
  19. 腾讯零反射全动态Android插件框架Shadow解析
  20. 联邦学习框架 FederatedScope(1)快速入门

热门文章

  1. php提交表单处理,PHP表单处理
  2. 操作系统:升级Windows 11正式版的四种方法,值得收藏!
  3. Linux排序命令sort笔记
  4. 程序员看了表示很开心
  5. SQL命令大全-中英文对照
  6. python程序写完后点哪个运行快_让你的Python运行更快
  7. Nodejs 文件上传
  8. mongo ttl索引
  9. 使用MetaPost绘制流程图
  10. 几个WMS的问题处理