呵呵,看到关于框架选择的帖子,贡献一点东西,如果你有选择struts的意向,还是直接等struts2好了。
Struts2与Struts1的对比
来源:struts2开发组 翻译:tianxinet(胖猴)
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一起使用。
分享到:
相关推荐
总结起来,"struts2 发布包"的1.3.9版本是Struts2框架的一个早期版本,虽然它包含了一些基本的MVC架构和拦截器机制,但随着技术的发展,新版本提供了更多的特性、优化和安全性改进。对于当前的开发环境来说,理解和...
Struts2是Apache软件基金会旗下的一个开源框架,主要用于构建企业级Java Web应用程序。...对于正在使用Struts2的开发者来说,升级至最新版本不仅可以享受到新功能,还能更好地保护应用程序免受潜在威胁。
Struts2的核心特性包括: 1. **Action与结果**:在Struts2中,业务逻辑处理主要由Action类负责。Action类执行特定的操作,并通过Result返回不同的视图。Result可以是JSP、FreeMarker模板或者其他类型的视图。 2. *...
总之,升级到Struts2新版本时,理解并适配新特性、优化和配置更改至关重要。这不仅能够确保项目的稳定运行,还能充分利用新版本带来的性能提升和功能扩展。务必参考官方文档和社区资源,以便获取最准确的信息和最佳...
综上所述,Struts2是一个功能强大且灵活的Java Web开发框架,它不仅提供了丰富的特性,还通过其独特的设计模式和插件机制,使得开发者能够快速构建高质量的Web应用程序。通过对Struts2核心概念和技术的理解,开发者...
Struts 2.3.28.1 是一...总结,Struts 2.3.28.1的发布对于使用Struts的开发者来说是一个重要的里程碑,它带来了安全性和性能的提升,以及可能的新特性。开发者应积极更新,以利用这些改进并确保应用的稳定性和安全性。
Struts2的2.38版是其官方发布的最新版本,针对之前版本进行了优化和更新,确保了更好的稳定性和安全性。 1. **Struts2框架核心组件**: - `struts2-core-2.3.8.jar`:这是Struts2的核心库,包含了框架的基础功能,...
Struts2在2007年发布,基于WebWork框架,引入了许多改进和新特性。相比Struts1,Struts2更强大、更灵活。其关键知识点包括: 1. **Action**:在Struts2中,Action类更加灵活,支持注解配置,可以使用OGNL(Object-...
随着技术的发展与进步,Struts1作为曾经广泛使用的Web应用框架,逐渐被Struts2等新一代框架所取代。Struts2以其更加灵活的设计、丰富的特性以及更好的性能表现成为众多开发者的首选。本文将深入探讨如何从Struts1...
Struts2是一个强大的MVC框架,它继承了Struts1的优点并引入了许多新特性。Struts2的核心是Action类,它处理用户请求,并与业务逻辑层交互。在"Struts2+Hibernate实现新闻发布系统"中,Action类可能被用来接收用户...
Struts2+Hibernate新闻发布后台管理系统源代码是一款基于Java EE技术栈的开源项目,主要用于构建高效、稳定的企业级新闻信息发布平台。这个系统的核心架构利用了Struts2作为MVC框架,Hibernate作为持久层框架,实现...
3. **拦截器(Interceptors)**:拦截器是Struts2的一个重要特性,它们按照预定义的顺序在Action执行前后进行干预,可以用于日志记录、权限验证、事务管理等。 4. **结果类型(Result Types)**:Struts2支持多种...
2.2.1是Struts2的一个版本,这个版本发布于2010年,是Struts2发展过程中的一个重要里程碑。这个版本包含了对框架的改进和修复,以提高性能和稳定性。 **Struts2的核心概念:** 1. **Action类**:在Struts2中,...
Struts2的核心特性包括模型-视图-控制器(MVC)架构、强大的动作(Action)处理、插件扩展性以及对多种模板技术的支持。在2.3.8版本中,我们可能会发现以下关键更新: 1. **安全改进**:Struts2 2.3.x系列不断致力...
其中`tiger`表示兼容Java 5及以上版本的类型检测,而`notiger`则表示不启用这些新特性。 #### struts.multipart.parser 指定了处理`multipart/form-data` MIME类型(文件上传)请求的框架,默认值为`jakarta`,表示...
- **事件模型**:Struts2提供了类似于发布/订阅(pub-sub)的事件模型,使得处理多组件间的交互变得更加灵活。 - **Ajax标签**:为了进一步简化开发过程,Struts2提供了一系列Ajax相关的标签,这些标签可以轻松地...
3. **发布投票**:在Struts2中,创建一个新的投票通常涉及创建一个Action类,该类包含处理投票发布请求的方法。Action类与数据库交互,将投票信息存储到数据库中,如投票主题、选项等。 4. **参与投票**:用户参与...
这个帮助文档(英文版)是基于Struts2的特定版本——2.2.3.1,该版本发布于2009年,包含了当时最新的特性和改进。此文档对于理解和开发基于Struts2的应用程序具有很高的参考价值。 `Struts2.2.3.1.chm`文件是一个...