知识点:struts2和struts1的区别
一、Action类
·Struts1要求Action类继承一个抽象类。Struts1的一个普遍问题是使用抽象类编程儿不是接口。
·Struts2中Action类可以实现一个Action接口,也可是实现其他接口,试可选和定制的服务成为可能。Struts2提供一个Action-Support基类去实现常用的接口。Action接口不是必须的,任何execute标识的POJO对象都可以用作Struts2的Action对象。
二、线程模式
·struts1中Action是单例模式并且是线程安全的,因为仅有Action的一个实力来处理所有的请求。单例策略限制了struts1 Action能做的事,并且要在开发时特别小心Action资源必须是线程安全的或同步的。
·struts2中Action对象为每一个请求产生一个实例,因此没有线程上的安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)
三、Servlet依赖
·struts1中Action依赖于servletAPI,因此当一个Action被调用时HttpServetRequest和HttpServletResponse被传递给execute方法。
·struts2中Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,struts2 Action仍然可以访问初始的request和response。但是,其他元素减少或者消除了直接访问HttpServetRequest和HttpServletResponse的必要性。
四、可测性
·测试struts1中Action的一个主要问题是execute方法暴露了servletAPI(这使得测试要依赖于容器)。一个第三方扩展—Struts TestCase—提供了一套Struts1的模拟对象(来进行测试)。
·Struts2中Action可以通过初始化,是设置属性,调用方法来测试,“依赖注入”支持也使得测试更容易。
五、捕获出入
·Struts1使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。因为其他JavaBean不能用作ActionForm开发者经常创建多余的类捕获输入。动态Bean(DynaBeans)可以作为传统ActionForm的选择,但是,开发者可能是在重新描述已经催在的JavaBean(仍然会导致有冗余的JavaBean)。
·Struts2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过web页面上的taglibs访问。Struts2也支持ActionForm模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种ModelDrien特性简化了taglib对POJO输入对象的引用。
六、表达式语言
·Struts1整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是对集合和索引的属性的支持很弱。
·Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言—Object Graph Notation Language(OGNL).
七、绑定值到页面(View)
·Struts1使用标准JSP机制吧对象绑定到页面中来访问。
·Struts2使用“ValueStack”技术,是taglib能够访问值而不需把你的压面(view)和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。
八、类型转换
·Struts1中ActionForm属性通常都是string类型。Struts1使用Commons-beanutils进行类型转换。每一个类一个转换器,对每一个实例来说是不可配置的。
·Struts2使用OGNL进行类型转换。提供基本和常用对象的转换器。
九、校验
·Struts1支持在ActionForm的validate方法中手动校验。或者通过Commons Validator的扩展来校验。同一个类可以有不同的校验内容,但不能校验子对象。
·Struts2支持通过validate方法和XWork校验框架进行校验。XWork校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性。
十、Action执行的控制
·Struts1支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。
·Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。
分享到:
相关推荐
NULL 博文链接:https://1136051009.iteye.com/blog/1768000
Struts2从零开始系列教程旨在帮助初学者深入理解并掌握Struts2框架的应用与开发。在第六部分中,我们将探讨Struts2的核心概念、工作原理以及如何在实际项目中运用它。Struts2是一个流行的Java Web应用框架,用于构建...
本教程将带你从零开始学习Struts2,通过第七个部分的内容,我们将深入理解其核心概念和实际应用。 首先,让我们探讨Struts2的基础知识。Struts2是Apache软件基金会的产品,它是基于Struts1的升级版,引入了更多现代...
在"Struts2从零开始(三)"这个主题中,我们将会深入探讨Struts2的核心概念和实际应用,逐步了解如何使用Struts2来构建一个Web应用程序。 1. **MVC设计模式**:Struts2遵循Model-View-Controller(MVC)设计模式,...
本教程将从零开始,帮助你深入理解并掌握Struts2的核心概念和实践技巧。 首先,我们要理解Struts2的核心架构。Struts2通过拦截器(Interceptor)机制实现了请求处理流程的控制,它允许开发者插入自定义的逻辑来扩展...
在“Struts2从零开始(二)”这个主题中,我们将会深入探讨Struts2的核心概念和实践操作,以帮助初学者更好地理解和掌握这个框架。 首先,Struts2的核心在于它的Action类,它是业务逻辑处理的主要组件。Action类...
本篇文章将从零开始,逐步介绍如何使用Struts2进行开发,带你走进Struts2的世界。 首先,让我们理解Struts2的核心概念。Struts2是一个轻量级、可扩展的MVC框架,它继承了Struts1的优点并解决了其不足,如性能问题和...
这个"Struts 从零开始"的压缩包显然是为初学者提供的一套学习资源,包含了六个基础练习工程,帮助理解并实践 Struts 框架的关键概念和功能。 首先,让我们深入了解一下 Struts 框架的核心组件和原理: 1. **控制器...
从Struts2.1版本开始,推荐使用Convention插件替代Codebehind插件,因为它更加自动化,几乎无需手动配置。 Convention插件的工作原理是基于“约定优于配置”(Convention over Configuration)的原则,它会自动识别...
### Struts2零配置个人整理文档 #### 一、Convention插件详解 ##### 1. 设置结果页面路径 - **背景介绍**:Struts2框架提供了便捷的方式来处理Web请求,并返回响应视图。为了简化配置过程,Struts2提供了一个名为...
从Struts2.1版本开始,`Codebehind`插件被`Convetion`插件取代,以提供更全面的零配置支持。`Convetion`插件通过自动扫描和推理应用程序中的类和方法来配置Action和结果映射,不需要开发者显式地在`struts.xml`或...
使用这个“struts2资源包”,开发者可以快速搭建一个基于Struts2的Web应用,无需从零开始配置所有的依赖。通过导入这些库,你可以实现动作类的定义、拦截器的设置、结果页面的跳转、表单验证、国际化、文件上传下载...
2. 例子工程说明..........................................................3 3. 建立工程..............................................................4 3.1. 创建新的Web Project ..........................
在本文中,我们将探讨如何使用Struts2和jQuery EasyUI框架创建一个简单的CRUD(创建、读取、更新、删除)系统。首先,我们需要理解这两个技术的基础概念。 Struts2是一个基于MVC(Model-View-Controller)架构的...
在“struts2零配置入门代码”这个主题中,我们将深入探讨如何在不编写大量XML配置文件的情况下,启动并运行一个基本的Struts2应用程序。 Struts2的核心在于它的Action类,它是业务逻辑处理的主要组件。在“零配置”...
最后,文档可能包含了一些实战示例,引导读者从零开始搭建一个完整的Struts2项目,通过实际操作加深对理论知识的理解。 总的来说,这份Struts2参考文档全面覆盖了Struts2框架的主要概念和技术,对于想要学习或已经...
12. **实战案例**:通过实际项目示例,展示如何从零开始构建一个完整的Struts2应用,涵盖需求分析、设计、编码和测试的全过程。 通过阅读《Struts2权威指南》,开发者不仅可以掌握Struts2框架的使用,还能深入理解...
10. **实战项目**:通过一个实际的小型项目,展示如何从零开始搭建一个基于Struts2 3.0的应用,涵盖了上述所有知识点的综合运用。 通过阅读“轻松入门之Struts2 3.0版”,开发者不仅能掌握Struts2的基本用法,还能...
使用Struts2和jQuery EasyUI实现简单CRUD系统,从零开始,从基础的ajax与Struts2的交互开始。