原文地址: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创建不同生命周期。同时可以创建自定义的拦截器栈。 |
相关推荐
通过上述对比可以看出,Struts2相比Struts1在很多方面进行了改进和优化,尤其是在灵活性、可测试性以及对现代Web开发的支持上有着显著的优势。尽管如此,在某些特定的应用场景下,Struts1可能仍然有其适用之处。选择...
Struts1和Struts2是两个非常著名的Java Web框架,它们在设计模式、可测试性、输入处理和表现层等方面存在显著的区别。 首先,Action类的设计有所不同。在Struts1中,Action类需要继承一个抽象基类,这限制了Action...
### Struts1与Struts2的区别与对比 #### 概述 Struts1与Struts2是基于Java的两种流行的Web应用框架,它们都遵循MVC(Model-View-Controller)设计模式,用于构建结构化的Web应用程序。Struts1是早期版本,在2000...
Struts1和Struts2是两个非常著名的Java Web框架,它们在处理MVC(Model-View-Controller)架构方面有着显著的区别。以下是关于这两个框架在关键特性上的对比: 1. **Action类**: - **Struts1**:要求Action类继承...
Struts1和Struts2是两个非常著名的Java Web框架,它们都由Apache软件基金会开发,用于构建MVC(Model-View-Controller)架构的应用程序。虽然它们在目标上相似,但在设计模式、功能特性和使用体验上存在显著差异。...
Struts1和Struts2是两个不同的版本,它们各自拥有独特的特性和功能,但在Java Web开发领域都扮演了重要角色。 **Struts1** Struts1是最早的版本,它在2001年发布,是基于ApacheJakarta项目的一个框架。Struts1的...
Struts2 和 Struts1 是两个著名的 Java Web 开发框架,它们都出自 Apache Software Foundation,但有着显著的区别。Struts1 是早期的 MVC 框架,而 Struts2 则是在 WebWork 框架的基础上发展起来的,它吸收了 Struts...
综上所述,尽管Struts1和Struts2都属于MVC架构的Web开发框架,但它们在设计理念和技术实现上有显著差异。Struts2在灵活性、可扩展性和易用性方面相对于Struts1有了很大的改进,这使得它成为许多现代Web应用开发的...
总结来说,Struts1、Struts2和Spring MVC各有优劣,选择哪个框架主要取决于项目需求、团队熟悉程度以及对框架特性的偏好。在现代Java Web开发中,Spring MVC因其灵活性和强大的功能,成为更受欢迎的选择。
### Struts1与Struts2本质区别 #### 1. 在Action实现类方面的对比 - **Struts 1**:要求Action类必须继承一个抽象基类`Action`,这种设计方式意味着开发者必须按照预设的结构来编写代码,灵活性较低。这种通过抽象...
Struts 2整合Struts 1,允许开发者利用Struts 1已有的投资,同时享受Struts 2带来的优势,如增强的类型安全和更强大的拦截器机制。 在《Struts 2权威指南--基于WebWork核心的MVC开发》这本书中,作者李纲深入浅出地...
1. **struts2-core.jar**:这是Struts2的核心库,包含了框架的主要组件,如Action、Result、Interceptor等。它定义了请求处理的流程,提供了ActionContext、ValueStack等关键对象。 2. **xwork-core.jar**:XWork是...
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和Struts 2两个版本的核心库和其他相关依赖,是开发和运行Struts应用的基础。 1. **Struts 1** - **概述**:Struts 1是最早的版本,于2000年发布,它是基于Servlet和JSP技术的,旨在解决...
5. 防御策略:提供关于如何配置Struts2以提高安全性的一些建议和最佳实践。 使用此工具可以帮助企业及时发现并修复Struts2框架中的安全漏洞,减少网络安全风险,确保数据和系统的安全。同时,对于开发者来说,了解...
Struts1和Struts2是两个非常著名的Java Web开发框架,它们都属于Apache软件基金会的Struts项目。Struts1是最早的版本,而Struts2是其后续的改进版,引入了许多新特性和性能优化。 Struts1的核心是ActionServlet,它...
### Struts2与Struts1的主要区别 #### Struts2架构设计与实现方式 - **Struts2**在设计上采用了更加灵活的方式,每个请求都对应一个实例化的Action对象,而不是像**Struts1**那样在整个请求周期内共享同一个Action...