转载自:http://www.blogjava.net/sterning/archive/2007/07/17/130892.html
特性
|
Struts1.x
|
Struts2
|
Action类
|
Struts1.x要求Action类要扩展自一个抽象基类。Struts1.x的一个共有的问题是面向抽象类编程而不是面向接口编程。
|
Struts2的Action类实现了一个Action接口,连同其他接口一起来实现可选择和自定义的服务。Struts2提供一个名叫ActionSupport的基类来实现一般使用的接口。当然,Action接口不是必须的。任何使用execute方法的POJO对象可以被当作Struts 2的Action对象来使用。
|
线程模型
|
Struts1.x Action类是单例类,因为只有一个实例来控制所有的请求。单例类策略造成了一定的限制,并且给开发带来了额外的烦恼。Action资源必须是线程安全或者同步的。
|
Struts2 Action对象为每一个请求都实例化对象,所以没有线程安全的问题。(实践中,servlet容器给每一个请求产生许多丟弃的对象,并且不会导致性能和垃圾回收问题)。
|
Servlet 依赖
|
Struts1.x的Action类依赖于servlet API,当Action被调用时,以HttpServletRequest和HttpServletResponse作为参数传给execute方法。
|
Struts2的Action和容器无关。Servlet上下文被表现为简单的Maps,允许Action被独立的测试。Struts2的Action可以访问最初的请求(如果需要的话)。但是,尽可能避免或排除其他元素直接访问HttpServletRequest或HttpServletResponse。
|
易测性
|
测试Struts1.x的主要问题是execute方法暴露了Servlet API这使得测试要依赖于容器)。第三方的扩展,如Struts TestCase,提供了一套Struts1的模拟对象(来进行测试)。
|
Struts2的Action可以通过初始化、设置属性、调用方法来测试。依赖注入的支持也是测试变得更简单。
|
捕获输入
|
Struts1.x使用ActionForm对象来捕获输入。象Action一样,所有的ActionForm必须扩展基类。因为其他的JavaBean不能作为ActionForm使用,开发者经常创建多余的类来捕获输入。DynaBeans可以被用来作为替代ActionForm的类来创建。但是,开发者可能是在重新描述(创建)已经存在的JavaBean(仍然会导致有冗余的javabean)。
|
Struts2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过web页面上的taglibs访问。Struts2也支持ActionForm模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种ModelDriven 特性简化了taglib对POJO输入对象的引用。
|
表达式语言
|
Struts1.x整合JSTL,所以它使用JSTL的表达式语言。表达式语言有基本的图形对象移动,但是对集合和索引属性的支持很弱。
|
Struts2使用JSTL,但是也支持一个更强大和灵活的表达式语言--"Object Graph Notation Language" (OGNL)。
|
将值绑定到页面
|
Struts1.x使用标准JSP机制来绑定对象到页面上下文。
|
Struts2使用“ValueStack”技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。
|
类型转换
|
Struts1.x的ActionForm属性经常都是String。Struts 1.x使用Commons-Beanutils来进行类型转换。转换每一个类,而不是为每一个实例配置。
|
Struts2使用OGNL进行类型转换。提供基本和常用对象的转换器。
|
验证
|
Struts1.x支持在ActionForm的validate方法中手动校验,或者通过Commons Validator的扩展来校验。同一个类可以有不同的校验内容,但不能校验子对象。
|
Struts2支持通过validate方法和XWork校验框架来进行校验。XWork校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性
|
Action执行控制
|
Struts1.x支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。
|
Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。
|
- 大小: 81.8 KB
分享到:
相关推荐
Struts1.x的验证机制基于ActionForm,利用Commons Validator等库进行数据校验,而Struts2.x则采用了更为强大的验证框架,如XWork Validator,支持链式验证和更复杂的验证规则,使得数据验证更加全面和细致。...
下面将对Struts2和Struts1.x进行全面比较,探讨它们的主要差异和改进。 1. **设计模式**: - **Struts1.x**:基于Front Controller模式,只有一个ActionServlet处理所有的请求。 - **Struts2**:采用拦截器...
在实际项目中,这四个技术的组合通常用来创建一个三层架构的应用:EXT JS 2.1负责前端交互和展示,Struts1.x作为后端的MVC框架处理请求和转发,Spring 2.x提供依赖注入和事务管理,而Hibernate 2.x则作为持久层框架...
本系列教程是针对初学者的全面指导,旨在帮助学习者快速掌握Struts1.x的核心概念和使用方法。下面我们将深入探讨Struts1.x的关键知识点。 1. **MVC架构**:MVC是一种设计模式,用于分离应用程序的数据、业务逻辑和...
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展、高效且易于管理的企业级应用程序。从2.3.24版本升级到2.5.26版本,这是一个重要的更新,涉及到许多改进、安全修复以及对新特性的支持。在进行这样的...
1. **Struts2** 配置:包括struts2的核心配置文件struts.xml,用于定义Action、结果类型、拦截器等。此外,还需要配置struts.properties以设置Struts2的基础属性。 2. **Spring** 配置:主要有applicationContext....
1. **配置环境**:确保JDK、Tomcat等基础环境已安装,然后下载Struts2、Hibernate和Spring的相应版本JAR包。 2. **添加依赖**:将下载的JAR包添加到项目的类路径中,或者如果使用Maven或Gradle,则在pom.xml或build....
本教程将深入探讨Struts1.x的常用知识,帮助你全面理解并掌握这一经典框架。 一、Struts1.x框架基础 1. **MVC模式**:Struts1.x遵循MVC模式,将应用分为模型(Model)、视图(View)和控制器(Controller)三个...
总的来说,这个例子是一个全面展示Struts1.x和MySQL集成的实践教程,涵盖了Web应用开发中的基础元素,包括用户验证、数据库操作以及错误处理。理解并掌握这些知识点对于任何想要从事Java Web开发的程序员来说都是至...
Struts1.x是一款经典的MVC(Model-View-Controller)框架,它在Java Web开发中有着广泛的应用。而Freemarker则是一种强大的、基于模板的动态语言,常用于生成HTML或其他类型的文本。将Struts1.x与Freemarker整合,...
Struts1.x、Spring 2.x 和 Hibernate3.x 是经典的Java Web开发框架组合,被称为SSH(Struts-Spring-Hibernate)集成。这个jar包集合包含了这三个框架的核心库和其他相关依赖,便于开发者快速搭建一个基于MVC模式的...
Struts 2.X是Java Web开发中非常重要的一个框架,它基于MVC(Model-View-Controller)设计模式,提供了一种结构化的、灵活的、可扩展的方式来构建应用程序。在《Struts 2.X权威指南(第3版)》第二章中,作者深入...
2. **配置文件**:如struts-config.xml、spring-context.xml、hibernate.cfg.xml,分别配置Struts1.x的动作映射、Spring的bean定义和Hibernate的数据源及实体映射。 3. **实体类**:表示数据库中的表,通常会包含...
1. **Spring集成**:Struts2可以无缝集成Spring,使得Action可以直接从Spring容器获取依赖,实现依赖注入,有利于解耦和测试。 2. **Hibernate集成**:Struts2提供了Hibernate插件,简化了数据访问层的操作,可以...
总结起来,"struts2+spring2.5.x"是一个结合了Struts2表现层控制和Spring业务层管理的Java Web开发模式,命名参数是Struts2中提高代码可读性和易维护性的特性,而Spring 2.5.x的依赖注入则提供了强大的组件管理能力...
Struts1.x、Spring 和 JTA(Java Transaction API)是Java Web开发中常见的三大技术,它们各自在应用程序架构中承担着不同的角色。本集成例子旨在展示如何将这三者结合,构建一个完整的业务处理系统。 Struts1.x是...
Spring4.x则是一个全面的轻量级应用框架,它提供了依赖注入(DI)和面向切面编程(AOP)等核心特性。在这个项目中,Spring作为整个应用的容器,管理着所有的Bean,包括Struts的动作类和服务类。通过Spring的DI,我们...
Struts2、Hibernate3.x和Spring是Java Web开发中的三个重要框架,它们分别负责MVC模式中的控制器、持久层管理和应用上下文管理。这组框架的整合使用,通常被称为S2SH,为开发者提供了强大的功能,提高了开发效率。...
1. **MVC设计模式**:Struts框架的核心是基于MVC模式,它将表现层(View)、控制层(Controller)和模型层(Model)分离,提高了代码的可读性和可维护性。 2. **ActionServlet与拦截器**:Struts 1使用ActionServlet...
1. **环境配置**:安装JDK、Apache Tomcat服务器、DB2数据库、Struts2、Spring和MyBatis的库文件。 2. **数据库连接**:配置DB2的JDBC驱动,创建数据库连接池,如使用C3P0或Druid。 3. **Spring配置**:创建Spring...