`

Strut1跟strut2的区别

阅读更多

Struts2跟Struts1的区别

 

1) 在Action实现类方面的对比:Struts 1要求Action类继承一个抽象基类;Struts 1的一个具体问题是使用抽象类编程而不是接口。Struts 2 Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制的服务成为可能。Struts 2提供一个ActionSupport基类去实现常用的接口。即使Action接口不是必须实现的,只有一个包含execute方法的POJO类都可以用作Struts 2的Action。

 

 

2) 线程模式方面的对比:Struts 1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts 1 Action能做的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的;Struts 2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。

 

3) Servlet依赖方面的对比:Struts 1 Action依赖于Servlet API,因为Struts 1 Action的execute方法中有HttpServletRequest和HttpServletResponse方法。Struts 2 Action不再依赖于Servlet API,从而允许Action脱离Web容器运行,从而降低了测试Action的难度。 当然,如果Action需要直接访问HttpServletRequest和HttpServletResponse参数,Struts 2 Action仍然可以访问它们。但是,大部分时候,Action都无需直接访问HttpServetRequest和HttpServletResponse,从而给开发者更多灵活的选择。

 

4) 可测性方面的对比:测试Struts 1 Action的一个主要问题是execute方法依赖于Servlet API,这使得Action的测试要依赖于Web容器。为了脱离Web容器测试Struts 1的Action,必须借助于第三方扩展:Struts TestCase,该扩展下包含了系列的Mock对象(模拟了HttpServetRequest和HttpServletResponse对象),从而可以脱离Web容器测试Struts 1的Action类。Struts 2 Action可以通过初始化、设置属性、调用方法来测试。

 

5) 封装请求参数的对比:Struts 1使用ActionForm对象封装用户的请求参数,所有的ActionForm必须继承一个基类:ActionForm。普通的JavaBean不能用作ActionForm,因此,开发者必须创建大量的ActionForm类封装用户请求参数。虽然Struts 1提供了动态ActionForm来简化ActionForm的开发,但依然需要在配置文件中定义ActionForm;Struts 2直接使用Action属性来封装用户请求属性,避免了开发者需要大量开发ActionForm类的烦琐,实际上,这些属性还可以是包含子属性的Rich对象类型。如果开发者依然怀念Struts 1 ActionForm的模式,Struts 2提供了ModelDriven模式,可以让开发者使用单独的Model对象来封装用户请求参数,但该Model对象无需继承任何Struts 2基类,是一个POJO,从而降低了代码污染。

 

 

6) 表达式语言方面的对比:Struts 1整合了JSTL,因此可以使用JSTL表达式语言。这种表达式语言有基本对象图遍历,但在对集合和索引属性的支持上则功能不强;Struts 2可以使用JSTL,但它整合了一种更强大和灵活的表达式语言:OGNL(Object Graph Notation Language),因此,Struts 2下的表达式语言功能更加强大。

 

 

7) — 绑定值到视图的对比:Struts 1使用标准JSP机制把对象绑定到视图页面;Struts 2使用“ValueStack”技术,使标签库能够访问值,而不需要把对象和视图页面绑定在一起。

 

8)类型转换的对比:Struts 1 ActionForm 属性通常都是String类型。Struts 1使用Commons-Beanutils进行类型转换,每个类一个转换器,转换器是不可配置的;Struts 2使用OGNL进行类型转换,支持基本数据类型和常用对象之间的转

换。

 

 

9) 数据校验的对比:Struts 1支持在ActionForm重写validate方法中手动校验,或者通过整合Commons alidator框架来完成数据校验。Struts 2支持通过重写validate方法进行校验,也支持整合XWork校验框架进行校验。

 

 

10) Action执行控制的对比:Struts 1支持每一个模块对应一个请求处理(即生命周期的概念),但是模块中的所有Action必须共享相同的生命周期。Struts 2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。开发者可以根据需要创建相应堆栈,从而和不同的Action一起使用。

 

11) 捕获输入:Struts1 使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。因为其他JavaBean不能用作ActionForm,开发者经常创建多余的类捕获输入。动态Bean(DynaBeans)可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建)已经存在的JavaBean(仍然会导致有冗余的javabean)。Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过 web页面上的taglibs访问。Struts2也支持ActionForm模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种 ModelDriven 特性简化了taglib对POJO输入对象的引用。

 

分享到:
评论

相关推荐

    strut1和struts2的区别

    描述strut1和struts2的区别的总结!

    基于struts2商品管理项目

    1. **Struts2框架**:Struts2作为MVC框架,核心是Action类,它处理HTTP请求并返回相应的结果。在本项目中,Action类将负责处理管理员和用户的所有业务逻辑,如商品的增删改查、用户登录验证等。Struts2提供了配置...

    UserInfoSys.rar_flex_flex strut_flex struts _flex struts2 list_s

    《Flex与Struts2结合构建用户信息管理系统》 在当今的Web开发领域,灵活而强大的技术框架组合是项目成功的关键。本系统“UserInfoSys”便是一个典型的实例,它利用Adobe Flex作为前端展示层,与Apache Struts2作为...

    Struts2实战

    1. Struts2框架的介绍:Struts2是Struts的下一代产品,它是在struts 1和WebWork的技术基础上进行了合并和改进后的新框架。Struts2的出现,标志着Java Web开发的一大进步,它为开发者提供了更加灵活和强大的开发工具...

    Struts2漏洞测试

    Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试...Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Strut

    Struts2的视频学习代码

    Struts2是一个强大的Java web应用程序框架,用于构建和管理MVC(模型-视图-控制器)架构的应用程序。这个“Struts2的视频学习代码”资料可能是为了帮助开发者深入理解和实践Struts2的核心概念和机制。以下是根据标题...

    struts2 API帮助文档

    1. **Struts2核心组件** - `struts2-core`:这是Struts2框架的核心模块,包含了处理请求、调度、拦截器、结果类型、动态方法调用等功能。其中,Action接口和ActionSupport类是处理业务逻辑的基础,而.struts.xml...

    struts2中文学习文档

    从给定的文件信息来看,标题“struts2中文学习文档”和描述“struts2的根本webwork2”表明这是一份关于Struts2框架的学习资料,特别强调了Struts2与WebWork2的关系。Struts2是Apache Struts的一个版本,它是一个用于...

    struts2所有jar包程序文件

    1. `struts2-core.jar`:这是Struts2框架的核心库,包含了Action、Result、Interceptor等核心组件的实现。 2. `xwork-core.jar`:XWork是Struts2的基础,提供了许多底层的功能,如类型转换、对象图导航、事件处理等...

    Struts2于Strut1的比较

    标题:“Struts2于Struts1的比较” 描述:“这是一个描述Struts2和Struts1比较的全面的教程” 在深入探讨Struts2与Struts1的比较之前,有必要先理解两者的基本概念及其发展历程。Struts是Java Web开发中一个重要的...

    全网最全Struts 2 全版本漏洞检测工具,最新struts漏洞更新

    1. **OGNL漏洞扫描**:检测Struts 2应用中是否存在可被恶意利用的OGNL表达式,如未过滤的用户输入或不安全的配置。 2. **插件漏洞扫描**:Struts 2有众多插件,这些插件可能存在单独的安全问题,工具会检查已安装...

    Struts2框架及注释和用法

    Struts2是一个强大的Java web开发框架,它基于MVC(Model-View-Controller)设计模式,为构建可维护性高、结构清晰的Web应用程序提供了一种解决方案。这个框架旨在简化开发过程,提高代码的可测试性和可重用性。下面...

    Strut1和Strut2的区别

    ### Struts1与Struts2的主要区别 #### 一、框架设计原理 **Struts1**采用MVC(模型-视图-控制器)设计模式,其中控制器由`ActionServlet`来实现,它处理HTTP请求并将控制权交给相应的`Action`类进行业务逻辑处理。...

    struts2.0整合Struts 1

    7. **插件架构**:Struts 2的插件体系使得扩展和定制变得简单,如 strut2-dojo-plugin 提供了与Dojo JavaScript库的集成。 整合Struts 1和Struts 2涉及到的主要工作包括: 1. **Action映射**:将Struts 1的Action...

    spring-mybatis-struts2-master ——demo

    1. 引入依赖:项目中会包含Spring、Struts2、MyBatis的jar包或者对应的Maven/Gradle依赖。 2. 配置Spring:创建Spring的配置文件,配置数据源、事务管理器、SqlSessionFactory、MapperScannerConfigurer等。 3. 配置...

    Struts2的总结和Strut2集成Spring

    #### Struts1.x与Struts2的区别 相比于Struts1.x,Struts2采用了更现代的设计理念,如拦截器机制替代了请求处理器,以及对依赖注入的支持,使得代码结构更加清晰,开发效率更高。 #### 非UI标志与UI标志 非UI标志...

    struts2+cas单点登陆例子

    1. **配置CAS客户端库**:首先,你需要在项目中引入CAS的Java客户端库,如`cas-client-support-struts2`,这个库提供了与Struts2框架集成的适配器。 2. **配置web.xml**:在项目的`web.xml`文件中,我们需要配置CAS...

    strut2jar包

    这个"strut2jar包"很可能是包含了Struts2框架的JAR文件,这些文件通常包含了框架的类库、接口、实现以及必要的资源文件。 Struts2的主要特点和优势包括: 1. **灵活的配置**:Struts2允许开发者通过XML或注解来配置...

    struts2简单例子

    Struts2是一个强大的Java EE应用程序框架,用于构建MVC(模型-视图-控制器)架构的Web应用。这个“struts2简单例子”是初学者理解Struts2工作原理和核心概念的一个很好的起点。让我们深入探讨一下Struts2的基础知识...

Global site tag (gtag.js) - Google Analytics