struts2已经出了很长时间了,出来有一段时间的时候,也就是去年的上半年的时候,很多额人都怀疑其稳定性,都在技术选型的时候一再保守,而我却不这么认为,后来在我的一再坚持下终于将此技术运用在了一个省级电信的oa系统中,从这一年多的运行情况来看,没有出现什么问题,一直运行稳定。
Struts1
和Struts2
的区别和对比:
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一起使用。
分享到:
相关推荐
通过这两个教程,你可以了解到Struts1和Struts2在架构设计、核心组件、配置方式以及开发实践上的异同,理解它们如何帮助开发者构建高效、可维护的Java Web应用。阅读Struts1.pdf文档,将帮助你掌握Struts1的基础知识...
Struts1和Struts2是Java Web开发中两种流行的MVC框架,它们在设计和功能上有许多不同之处。以下是对这两个框架异同点的详细解释: 1. **Action类**: - **Struts1**:要求Action类继承一个抽象基类,如`Action`或`...
Struts2和Struts1是两个非常著名的Java Web框架,由Apache软件基金会开发,用于构建MVC(模型-视图-控制器)架构的应用程序。这两个框架在Web开发中扮演着重要角色,帮助开发者组织和管理应用程序逻辑,提高代码的可...
在实际项目中,开发者应掌握Struts和Struts2的异同,以便在开发过程中做出最佳决策。对于新手来说,了解这两个框架的历史和发展有助于更好地理解和掌握Java Web开发的演进历程。通过深入学习和实践,开发者可以充分...
三、Struts1.2与Struts2的异同 1. **ActionServlet**:Struts1.2使用单一的ActionServlet处理所有请求,而Struts2引入了Front Controller模式,所有的请求都由StrutsPrepareAndExecuteFilter处理。 2. **表达式语言...
JSF与Struts的异同** - **组件化:**JSF更注重组件化开发,而Struts更侧重于请求驱动。 - **编程模型:**JSF使用声明式编程,Struts则更偏向于程序化的控制流。 - **灵活性:**Struts的配置文件更加灵活,而JSF则...
### WebWork与Struts处理上的异同分析 #### 一、引言 随着Web应用的发展,Java企业级应用框架在不断进化与完善之中。其中,Struts与WebWork是两个非常重要的MVC(Model-View-Controller)架构框架,它们在Java Web...
详细介绍JSF与Struts的异同 详细介绍JSF与Struts的异同
### MVC模式下JSF与Struts的异同分析 #### 一、概述 MVC(Model-View-Controller)模式是一种广泛应用于软件工程中的设计模式,尤其在Web应用开发领域非常常见。它将应用程序分为三个核心组件:模型(Model)、视图...
虽然Struts 2和Struts 1都属于MVC框架,但是它们之间存在着显著的不同: - **架构上的差异**:Struts 2采用了拦截器机制,而Struts 1则依赖于Servlet容器的生命周期。 - **灵活性**:Struts 2更加灵活,支持更多的...
本文将详细解析 JAVA Struts2 框架相关知识点,涵盖异常处理、Servlet 生命周期、集合框架、HashMap 和 Hashtable 的区别、final、finally 和 finalize 的区别、sleep 和 wait 的区别、Overload 和 Override 的区别...
尽管本书可能主要关注Struts1,但理解这两个版本的异同对于全面掌握MVC框架至关重要。 总之,《精通Struts:基于MVC的Web设计与开发》这本书将带你深入理解Struts框架的每一个角落,无论是初学者还是有经验的开发者...
1. **Model-View-Controller(MVC)**:Struts2 基于 MVC 设计模式,将业务逻辑、表示层和数据访问分离,提高了代码的可维护性和可扩展性。 2. **Action 类**:Struts2 中的核心组件,负责接收请求、执行业务逻辑并...
总的来说,网上订餐系统和网上书店系统的开发,是Java开发者深入学习和实践的好机会,通过结合Struts、Hibernate和Spring等技术,可以构建出功能强大、可扩展性强的Web应用。不断探索和实践这些知识,将有助于你在IT...
Struts2和WebWork是两个在Java Web开发中广泛使用的MVC框架,它们在发展过程中有着密切的关系。Struts2实际上是Struts1和WebWork融合的产物,旨在提供更高效、更灵活的解决方案。这两者之间的不同和相同点可以从以下...
1. **MVC模式**:Struts遵循MVC设计模式,将业务逻辑、数据模型和用户界面分离,使得代码更加清晰,易于维护。书中会详细介绍如何在Struts中配置和使用控制器、模型和视图组件。 2. **Action类与Form Beans**:...
- **后续比较**:读者可以将学到的Struts知识与JSF进行对比,从而加深对两者之间异同的理解。 #### 三、结论 本教程详细介绍了如何使用MyEclipse Enterprise Workbench来快速构建一个简单的Struts示例应用,涵盖了...
1. **Model**:模型层是应用程序的核心部分,负责处理业务逻辑和数据管理。开发者通常会使用JavaBeans或POJO(Plain Old Java Objects)来实现模型对象。 2. **View**:视图层是用户与应用交互的界面。Struts支持...
部署应用时,可以选择Tomcat或WebLogic等应用服务器,理解两者间的异同,有助于优化性能和满足不同的部署需求。 总结来说,Spring+Hibernate+Struts三框架的集成提供了强大的MVC架构支持和灵活的持久层解决方案,...
2. Struts配置文件的理解,如struts-config.xml中action元素、form-beans元素和message-resources元素的使用。 3. Struts拦截器(Interceptor)的工作原理和自定义拦截器的实现。 4. 使用Tiles进行页面布局的优势和...