`
阅读更多

原文地址:http://struts.apache.org/release/2.1.x/docs/comparing-struts-1-and-2.html

声明:由于本人英语水平有限and技术水平有限,不精准之处还望包涵。 

 

特性 Struts 1 Struts 2
Action 类 Struts 1要求Action类必须继承一个抽象的基类。从而当我们使用Struts 1开发运用时,以面向抽象类的方式编程而不是面向接口的方式编程。 Struts 2 Action 可以实现Action接口和其它接口来提供可选的可定制的服务。Struts 2提供了ActionSupport基类来实现通用的接口。Action 接口非必选的。任何包含execute签名的POJO对象都可以作为Struts2 Action 对象。
线程模型 Struts 1 Action是单例的切必须是线程安全的,因此针对某个Action的请求,Servlet容器只会生成该Action的一个实例。单例策略限制了Struts 1 Action的功能。Action 资源必须是线程安全或者同步的。 Struts 2 为每个请求实例化Action 对象,因此不会产生线程安全问题。
Servlet依赖 Struts 1 Action依赖Servlet API,因为当Action被调用时,HttpServletRequest和HttpServletResponse将作为参数传入execute方法。 Struts 2 Action没有与servlet容器耦合。servlet上下文环境经常是以简单的Map来表示,这样的话,Action可以脱离servlet容器测试。Struts 2 Action依然可以访问原生的request和response。
可测试性 测试Struts 1Action主要的障碍就是execute方法暴露了Servlet API。第三方的扩展组件Struts TestCase为Struts 1提供一系列的mock对象。 通过实例化Action,设置属性和调用方法来测试Struts 2 Action。Struts 2 对依赖注入的支持使得测试更加的简单。
捕获输入(Harvesting Input) Struts 1 使用ActionForm对象来捕获input。与Action一样,所有的ActionForm必须继承一个基类。因为其他的JavaBean不能作为ActionForm,所以开发者经常创建过多的类来捕获input。DynaBeans作为另外一种方法来创建通用的ActionForm类,但是,开发者可能要重现描述已经存在的JavaBean。 Struts 2 使用Action属性作为Input属性,从而我们不再需要另外的input对象。 Input属性可以是拥有自己的属性的复杂的对象类型。通过标签库可以从web页面访问Action属性。Struts 2 除了支持POJO form对象,POJO Action,也支持ActionForm模式。 包括业务或者域对象的负责对象类型可以作为input/output对象。ModelDriven特性简化了对POJO input对象的标签的索引。
表达式语言 Struts 1 整合了JSTL,所以它使用JSTL 表达式语言。表达式语言具有基本的对象图遍历的功能,但是对集合和索引的属性支持方面相对薄弱。 Struts 2 可以使用JSTL,但同时还支持强大且不失灵活的OGNL表达式语言。
绑定值到视图 Struts 1 使用标准的JSP机制绑定对象到page context中供访问。 Struts 2 使用“ValueStack”技术,从而标签库不需要耦合视图和它要渲染的对象类型。值栈(ValueStack)策略允许重用跨越了不同类型(拥有相同的属性名不同的属性类型)的视图
类型转换 Struts 1 ActionForm属性通常都是字符串。Struts 1 使用Commons-Beantuils组件进行类型转换。 Struts 2 使用OGNL进行类型转换。框架自带了一些基本的通用的对象类型和基本属性类型的转换器。
验证 Struts 1 通过ActionForm的validate方法或者通过一个Commons Validator的扩展组件手动验证。同样的类可以有不同验证上下文,但是不支持多态验证(chainto validations on sub-objects)  Struts 2 通过validate方法和XWork Validation框架手动验证。Xwork Validation框架支持多态验证(chaining validation into sub-properties using the validations defined for the properties class type and the validation context. )
控制Action执行  Struts 1 支持每个模块拥有不同请求处理器,但是同一模块的所有的Action必须共享同样的生命周期。 基于拦截器栈,Struts 2为每个Action创建不同生命周期。同时可以创建自定义的拦截器栈。

 

分享到:
评论

相关推荐

    struts1和struts2的区别

    通过上述对比可以看出,Struts2相比Struts1在很多方面进行了改进和优化,尤其是在灵活性、可测试性以及对现代Web开发的支持上有着显著的优势。尽管如此,在某些特定的应用场景下,Struts1可能仍然有其适用之处。选择...

    Struts1和Struts2的区别和对比

    Struts1和Struts2是两个非常著名的Java Web框架,它们在设计模式、可测试性、输入处理和表现层等方面存在显著的区别。 首先,Action类的设计有所不同。在Struts1中,Action类需要继承一个抽象基类,这限制了Action...

    Struts1和Struts2的区别和对比.txt

    ### Struts1与Struts2的区别与对比 #### 概述 Struts1与Struts2是基于Java的两种流行的Web应用框架,它们都遵循MVC(Model-View-Controller)设计模式,用于构建结构化的Web应用程序。Struts1是早期版本,在2000...

    struts1和struts2区别

    Struts1和Struts2是两个非常著名的Java Web框架,它们在处理MVC(Model-View-Controller)架构方面有着显著的区别。以下是关于这两个框架在关键特性上的对比: 1. **Action类**: - **Struts1**:要求Action类继承...

    Struts1和Struts2区别

    Struts1和Struts2是两个非常著名的Java Web框架,它们都由Apache软件基金会开发,用于构建MVC(Model-View-Controller)架构的应用程序。虽然它们在目标上相似,但在设计模式、功能特性和使用体验上存在显著差异。...

    struts1和struts2的jar包

    Struts1和Struts2是两个不同的版本,它们各自拥有独特的特性和功能,但在Java Web开发领域都扮演了重要角色。 **Struts1** Struts1是最早的版本,它在2001年发布,是基于ApacheJakarta项目的一个框架。Struts1的...

    Struts2与Struts1区别

    Struts2 和 Struts1 是两个著名的 Java Web 开发框架,它们都出自 Apache Software Foundation,但有着显著的区别。Struts1 是早期的 MVC 框架,而 Struts2 则是在 WebWork 框架的基础上发展起来的,它吸收了 Struts...

    struts1和struts2的区别(详细)

    综上所述,尽管Struts1和Struts2都属于MVC架构的Web开发框架,但它们在设计理念和技术实现上有显著差异。Struts2在灵活性、可扩展性和易用性方面相对于Struts1有了很大的改进,这使得它成为许多现代Web应用开发的...

    struts1原理,struts2原理,spring mvc原理,struts1和struts2,struts和spring mvc

    总结来说,Struts1、Struts2和Spring MVC各有优劣,选择哪个框架主要取决于项目需求、团队熟悉程度以及对框架特性的偏好。在现代Java Web开发中,Spring MVC因其灵活性和强大的功能,成为更受欢迎的选择。

    Struts1与Struts2本质区别

    ### Struts1与Struts2本质区别 #### 1. 在Action实现类方面的对比 - **Struts 1**:要求Action类必须继承一个抽象基类`Action`,这种设计方式意味着开发者必须按照预设的结构来编写代码,灵活性较低。这种通过抽象...

    struts2.0整合Struts 1

    Struts 2整合Struts 1,允许开发者利用Struts 1已有的投资,同时享受Struts 2带来的优势,如增强的类型安全和更强大的拦截器机制。 在《Struts 2权威指南--基于WebWork核心的MVC开发》这本书中,作者李纲深入浅出地...

    struts2jar包

    1. **struts2-core.jar**:这是Struts2的核心库,包含了框架的主要组件,如Action、Result、Interceptor等。它定义了请求处理的流程,提供了ActionContext、ValueStack等关键对象。 2. **xwork-core.jar**:XWork是...

    struts1 和 struts2所需jar包

    struts1 和 struts2所需jar包。主要包含以下内容: struts-1.3.10-all.zip struts-1.3.10-apps.zip struts-1.3.10-lib.zip struts-1.3.10-src.zip struts-2.3.4.1-all.zip struts.rar

    Struts 1和Struts2 Jar包集合 你懂的

    这个压缩包包含了Struts 1和Struts 2两个版本的核心库和其他相关依赖,是开发和运行Struts应用的基础。 1. **Struts 1** - **概述**:Struts 1是最早的版本,于2000年发布,它是基于Servlet和JSP技术的,旨在解决...

    Struts2漏洞检查工具Struts2.2019.V2.3

    5. 防御策略:提供关于如何配置Struts2以提高安全性的一些建议和最佳实践。 使用此工具可以帮助企业及时发现并修复Struts2框架中的安全漏洞,减少网络安全风险,确保数据和系统的安全。同时,对于开发者来说,了解...

    struts1和struts2项目实例

    Struts1和Struts2是两个非常著名的Java Web开发框架,它们都属于Apache软件基金会的Struts项目。Struts1是最早的版本,而Struts2是其后续的改进版,引入了许多新特性和性能优化。 Struts1的核心是ActionServlet,它...

    Struts2和Struts1的区别,详细点,主要说说Struts2

    ### Struts2与Struts1的主要区别 #### Struts2架构设计与实现方式 - **Struts2**在设计上采用了更加灵活的方式,每个请求都对应一个实例化的Action对象,而不是像**Struts1**那样在整个请求周期内共享同一个Action...

Global site tag (gtag.js) - Google Analytics