`
allbin1983
  • 浏览: 36739 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

WEB框架Struts回顾

阅读更多

在坛子里和SimpleFramework的相关文档里,曾经有过simpleFramework与Struts的简单比较。在此,我们再对Struts这个Web框架的鼻祖做一回顾。

1)Struts1的脚步已渐行渐远,在这Web框架及其技术百花齐放的今天,只能挥手说再见。但作为Java Web应用程序员级架构师,谁都不能忘记:Struts1在Web应用的历史长河中的不朽功勋!

2)作为Struts1.x的升级以及和Webwork结合产物的Struts2,也再次在Web框架及其应用的历史上写下了浓重的一笔,继续推动着Web的革命。

1、Struts2的运行机理

2、Struts1和Struts2的比较

特性

Struts1

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一起使用。

作为流行的成熟的Java Web框架,尤其是作为SSH的重要组成部分,Struts有着长盛不衰的生命力。

但是我坚信:SimpleFramework也与Struts一样,有着自己光辉的未来。因为我们的信念是:开放、融合、补充、共生,不是简单的替代!

详细说明: http://simpleframework.net/simple/bbs/pl.jsp?forumId=836&__topic_Id=5117

分享到:
评论

相关推荐

    struts2框架2016版资料day01

    Struts2是Java Web开发中一个非常重要的MVC框架,由Apache软件基金会维护。这个"struts2框架2016版资料day01"涵盖了Struts2的基础知识,包括框架的基本架构、核心概念和初步配置。传智播客作为知名的IT教育机构,其...

    struts2框架的使用

    在本压缩包中,你可能会找到关于Struts2框架配置和使用的一些关键文件,这将帮助你在未来回顾或重新学习Struts2时快速上手。 首先,让我们深入了解一下Struts2的核心概念: 1. **Action类**:在Struts2中,业务...

    Comparing the Struts 1 and Struts 2 Web Application Frameworks

    如果你正在考虑升级或选择一个新的Java Web框架,理解两者之间的差异和优缺点是非常重要的。 文章“Comparing the Struts 1 and Struts 2 Web Application Frameworks”可能详细分析了这两个框架的各个方面,包括但...

    struts 回顾

    这篇博客可能是对Struts框架的一个回顾,探讨其基本概念、工作原理以及在实际开发中的应用。 Struts的核心组件包括: 1. **Action类**:这是业务逻辑的入口点,处理用户请求,并与模型进行交互。 2. **ActionForm**...

    struts2框架模拟-教学示范代码

    Struts2是一个强大的Java web应用程序开发框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建可维护、结构清晰的web应用的工具。本教学示范代码是针对Struts2自定义框架的实践操作,旨在帮助...

    struts2验证框架参数

    在深入探讨Struts2验证框架参数之前,我们首先简要回顾一下Struts2框架本身。Struts2是基于MVC(Model-View-Controller)设计模式的Java Web应用框架,它提供了一种灵活的方式来构建可扩展的企业级Web应用程序。...

    struts1.3 jar包

    对于初学者来说,理解并掌握Struts1的基本原理和使用方法,可以帮助他们更好地理解MVC架构,为进一步学习其他更现代的Web框架打下坚实基础。而对于有经验的开发者来说,回顾Struts1的历史和机制,也有助于他们更好地...

    Struts书籍 Struts_In_Action_中文版

    这部分详细讲解了如何利用Struts框架来构建完整的Web应用程序,包括项目的搭建、配置文件的编写等。 **2.3 为什么需要框架** **2.3.1 Web—永无休止的修补** 随着Web应用的不断发展,传统的开发方式已经不能满足...

    web框架导论

    综上所述,Web框架导论通过介绍JavaWeb技术、JSP、Servlet、JDBC、MVC模式和三层结构,以及Struts、Hibernate和Spring等流行框架,为学习者提供了全面的Web开发框架知识,旨在帮助学习者更快更好地构建Web应用程序。

    Struts1.x使用回顾

    总结,Struts1.x作为早期流行的Java Web框架,它的设计思想和实现方式对后来的框架有着深远影响。虽然现在已经有了更先进的替代品,如Spring MVC,但理解Struts1.x的基本原理和使用方法,对于理解Web开发的演变历史...

    孙卫琴精通Struts:基于MVC的JavaWeb设计与开发课件.rar

    这门课件由知名IT专家孙卫琴主讲,旨在帮助开发者更好地理解和掌握Struts框架,从而实现高效、可维护的Web项目。Struts作为一款经典的Model-View-Controller(MVC)架构的框架,是JavaWeb开发领域的重要工具,它的...

    st2 webconsole.html页面ognl调试1

    Struts2是一个流行的Java web应用程序框架,用于构建MVC(模型-视图-控制器)架构的应用。在开发过程中,调试是必不可少的环节,Struts2提供了多种调试方式,其中包括XML、Console、Command和Browser模式。这里我们...

    struts1.1中文手册

    尽管如此,Struts 1.x的知识仍然是理解和学习MVC设计模式的基础,对于初学者或希望回顾经典Web开发技术的开发者来说,仍然具有很高的参考价值。 请注意,随着技术的迭代,Struts框架的某些特性可能已被新的框架所...

    Struts2教程

    让我们先来回顾一下建立基于 Struts1.x 的 Web 程序的基本步骤。 1. 安装 Struts 。由于 Struts 的入口点是 ActionServlet ,所以得在 web.xml 中配置一下这 个 Servlet 。 2. 编写 Action 类(一般从 org.apache....

    struts1完整demo

    在这个"struts1完整demo"中,我们可以回顾和学习Struts1框架的基础知识和核心概念。 1. **MVC模式**:MVC模式是软件设计模式的一种,将业务逻辑、数据和用户界面分离。Struts1框架实现了这一模式,Controller由...

    struts2参考文档(word版)

    Struts2 是一个基于 Model-View-Controller (MVC) 设计模式的开源Java Web框架,它被广泛用于构建企业级Web应用程序。本参考文档详细介绍了Struts2框架的各个方面,帮助初学者全面理解并掌握这个强大的开发工具。 ...

    struts2笔记

    在理解Struts2之前,我们首先需要回顾一下Web开发的两种经典模式:Model1和Model2。 Model1模式是早期的Web开发模式,它将JSP页面用于展示和数据处理,而JavaBean则用于存储业务逻辑和数据。这种模式导致了代码高度...

Global site tag (gtag.js) - Google Analytics