`

[JAVA/JSP]Struts1.x与Struts2.x的比较

 
阅读更多
特性
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一起使用。
分享到:
评论

相关推荐

    对struts1.x与struts2.x的区别的总结

    Struts1.x与Struts2.x是两种非常流行的Java Web应用程序框架,它们都由Apache软件基金会开发,旨在简化MVC(Model-View-Controller)架构的实现。然而,两者在设计哲学、功能特性以及实现方式上存在显著差异。以下是...

    struts1.x和struts2.x区别

    ### Struts1.x与Struts2.x的主要区别 在深入探讨Struts1.x与Struts2.x的区别之前,我们先来了解一下这两个框架的基本背景。Apache Struts是用于构建企业级Web应用程序的开源框架,它提供了MVC(模型-视图-控制器)...

    Struts1.x常用的开发包,需要学习struts1.x朋友可以下载

    虽然现在Struts1.x已经被Struts2等更新的框架所取代,但它的基础思想和设计模式仍然是Java Web开发中的重要参考。对于想要了解Web开发历史或深入理解MVC框架的开发者来说,学习Struts1.x仍然具有一定的价值。

    struts2配置2.5版

    <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <action name="helloworld" class="com.mytest.HelloWorldAction"> <result> /result....

    java Struts 1.x 框架 Web 开发

    Struts 1.x 是一个基于 Model-View-Controller (MVC) 设计模式的 Java Web 开发框架,由 Apache 软件基金会开发并维护。它在20世纪末到21世纪初广泛应用于企业级Web应用开发,因其强大的功能和良好的社区支持而受到...

    struts1.x技术课程讲解.pdf

    **Struts1.x** 是一款基于 Java Servlet 和 JSP 技术的企业级 Web 应用开发框架,它实现了 Model-View-Controller (MVC) 设计模式。此框架旨在简化 Web 应用程序的开发过程,提高代码的可维护性和可扩展性。 - **...

    Struts1.x系列教程(网摘-全)

    Struts1.x是一款经典的Java Web开发框架,由Apache软件基金会维护,主要用于构建MVC(Model-View-Controller)架构的应用程序。本系列教程是针对初学者的全面指导,旨在帮助学习者快速掌握Struts1.x的核心概念和使用...

    酒店管理 jsp struts1.x

    【酒店管理 jsp struts1.x】是一种基于Java技术的Web应用程序开发框架,用于构建高效、可扩展且易于维护的酒店管理系统。在这个系统中,`jsp`(JavaServer Pages)作为视图层,负责展示用户界面,而`struts1.x`作为...

    struts1.x apps 所有最新的Struts1.x项目应用

    Struts1.x是一款经典的Java Web框架,由Apache软件基金会开发并维护。它是MVC(Model-View-Controller)设计模式的实现,极大地简化了Java Web应用程序的开发过程。本资源集合包含了所有最新的Struts1.x项目应用,为...

    Struts1.x_Project.zip

    Struts1.x是一个经典的Java Web开发框架,它遵循Model-View-Controller(MVC)设计模式,用于构建可维护性和可扩展性高的企业级应用程序。在这个"Struts1.x_Project.zip"压缩包中,我们可以看到一个使用Struts1.x...

    struts1.x 最简洁国际化 源代码

    Struts1.x是一个经典的Java Web框架,用于构建MVC(模型-视图-控制器)架构的应用程序。在国际化(i18n)方面,Struts1提供了强大的支持,使得应用程序可以适应不同语言和地区的用户需求。以下是关于Struts1.x国际化...

    Struts1.x的登录示例

    Struts1.x是一个经典的Java Web框架,它在20世纪末至21世纪初被广泛使用,用于构建基于MVC(Model-View-Controller)架构的Web应用。本示例将探讨如何使用Struts1.x实现一个简单的登录功能。首先,我们需要理解...

    struts1.x 和 struts2.x向Action里填充jsp参数原理

    本篇文章将深入探讨Struts1.x和Struts2.x在向Action中填充JSP参数的原理。 Struts1.x的工作原理: Struts1的核心是ActionServlet,它是一个实现了Servlet接口的控制器。当用户发起HTTP请求时,请求会被Dispatcher...

    struts1.x入门教程

    【Struts1.x入门教程】 Struts1.x是Apache Jakarta项目的一个重要组成部分,它是一个用于构建企业级Web应用程序的开源MVC框架。该框架的主要目标是简化JavaServer Pages(JSP)、Servlet和标签库的使用,同时提升...

    魔乐科技Struts2.x框架笔记

    **Struts2.x与Struts1.x对比**:相较于Struts1.x,Struts2.x具有更多的优势,如不再强制要求ActionForm,配置文件更简洁,处理流程更加清晰。具体而言,请求首先被过滤器捕获,然后根据`struts.xml`文件的配置调用...

    搭建struts1.x的jar包

    Struts 1.x 是一个经典的Java Web开发框架,由Apache软件基金会开发,它极大地简化了MVC(模型-视图-控制器)架构的实现。如果你正在寻找如何搭建Struts 1.x的开发环境,以下是一些关键的知识点,以及这些指定的jar...

    struts1.x多文件上传

    Struts1.x是一个非常经典的Java Web开发框架,它在过去的许多年里被广泛使用。文件上传功能是Web应用中常见的需求之一,特别是在处理用户需要提交多个文件的场景下。Struts1.x提供了处理多文件上传的功能,使得...

    blog_jsp.rar_../../../etc/passwd_/etc/passwd_java 博客_java博客_main

    标题中的"blog_jsp.rar_../../../etc/passwd_/etc/passwd_java 博客_java博客_main"提到了几个关键点:`jsp`、`struts`、`../../../etc/passwd`、`/etc/passwd`、`java`、`博客`、`main.jsp?artcl`。这些关键词涉及...

    struts1.x入门

    2. **创建 Web 项目**:使用 IDE(如 Eclipse 或 IntelliJ IDEA)创建一个新的 Web 项目,命名为 `myStruts1.x`。 3. **导入 JAR 文件**:将解压后的 Struts 库文件(位于 `lib` 目录下)导入到项目中。可以通过...

    Struts1.x在线购物车系统,Hibernate,Mysql

    **Struts1.x** 是一个开源的Java框架,主要用于构建MVC(模型-视图-控制器)架构的Web应用。它提供了组织和控制应用流程的结构,使得开发人员可以将业务逻辑与用户界面分离。Struts1.x 提供了一系列的拦截器...

Global site tag (gtag.js) - Google Analytics