`
kidiaoer
  • 浏览: 805626 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Struts2.0的概述,总体总结

阅读更多
Struts2.0的概述,总体总结
一.Struts2.0的产生的背景
   在Struts 1中设计中,虽然体现了MVC架构的的思想,并且以强有力的功能轰动一时,是jsp革新的里程碑,但
也存在着多种缺陷,从而导致了Struts2.0的诞生。
缺陷:
1.支持的表现层技术单一
    Struts 1只支持JSP作为表现层技术,不提供与其他表现层技术,例如Velocity、FreeMarker等技术的整合。
这一点严重制约了Struts 1框架的使用,对于目前的很多Java EE应用而言,并不一定使用JSP作为表现层技术

2.与Servlet API严重耦合,难于测试
    因为Struts 1框架是在Model 2的基础上发展起来的,因此它完全是基于Servlet API的,所以在Struts 1的
业务逻辑控制器内,充满了大量的Servlet API。
    当我们需要测试Action类的execute方法时,该方法有4个参数:ActionMapping、ActionForm、
HttpServletRequest和HttpServletResponse,初始化这4个参数比较困难,尤其是 HttpServletRequest和
HttpServletResponse两个参数,通常由Web容器负责实例化。由于HttpServletRequest和 HttpServletResponse两
个参数是Servlet API,严重依赖于Web服务器。因此,一旦脱离了Web服务器,Action的测试非常困难。
3.代码严重依赖于Struts 1 API,属于侵入式设计
Struts 1的Action类必须继承Struts 1的Action基类,实现处理方法时,又包含了大量Struts 1 API:如ActionMapping、
ActionForm和ActionForward类。这种侵入式设计的最大弱点在于,一旦系统需要重构时,这些Action类将完全没有利用价值
,成为一堆废品。
以上这些原因导致需要新的架构来改善这些缺点,那么就导致了Struts2.0的诞生。
二.Struts2.0 不是Struts1.0的继承,而是WebWork的发展的结果。
1.Struts 1与webwork的比较
(1)架构设计方面:
相对于Struts 1存在的那些先天性不足而言,WebWork则更加优秀,它采用了一种更加松耦合的设计,让系统的Action不再与Servlet API耦合。使单元测试更加方便。
(2)表现层方面:Struts 1仅支持JSP表现层技术,WebWork支持更多的表现层技术,如Velocity、FreeMarker和XSLT等。
(3)处理流程方面:WebWork与Struts 1非常类似,它们的核心都由控制器组成,其中控制器都由两个部分组成:
— 核心控制器ServletDispatcher,该控制器框架提供。
— 业务逻辑控制器Action,该控制器由程序员提供。
2.webwork的优点:
(1)Action无需与Servlet API耦合,更容易测试,代码重用率高
    在webWork中actionf无需继承Action类或者实现Action接口,只需要配置Struts.xml即可方便的运行,降低了与 Servlet API的耦合,无需再通过开动容器解析,即可测试。从而带来的好处就是代码独立性更强,提高了代码的重用性。
(2)支持更多的表现层技术,有更好的适应性
    WebWork对多种表现层技术:JSP、Velocity和FreeMarker等都有很好的支持,从而给开发更多的选择,提供了更好的适应性。
3.Struts2.0 的产生
正是由于webwork的这些优点,同时也是Struts 1中所要改善的地方。那么互补便产生了Struts 2,Struts 2是Struts 1与webwork 连个框架的统一。但核心技术更偏向于webwork,因此重某种程度上说是威尔伯webwork的发展。
三.Struts 2体系介绍
1.Struts 2框架架构
Struts 2使用拦截器作为处理,以用户的业务逻辑控制器为目标,创建一个控制器代理来接受用户发来的数据,通过execute方法进行处理,然后返回结果。
具体的流程描述如下:
(1)浏览器发送请求,指明用什么.Action来处理该请求。
(2)核心控制器 FilterDispatcher根据请求决定调用合适的Action。
(3)WebWork的拦截器链自动对请求应用通用功能。
(4)回调Action的execute方法,该execute方法先获取用户请求参数,根据实际请求,初始化具体的参数,调用业务逻辑组件来处理用户的请求。
(5)根据Action的execute方法处理结果信息查找配置文件转到相应的页面,可以是HTML页面、图像,也可以是PDF文档或者其他文档。此时支持的视图技术非常多,既支持JSP,也支持Velocity、FreeMarker等模板技术。
2. Struts 2的控制器组件
Struts 2的控制器组件是Struts 2框架的核心,事实上,所有MVC框架都是以控制器组件为核心的。Struts 2的控制器由两个部分组成:FilterDispatcher和业务控制器Action。
    该Action类有如下优势:
—  Action类完全是一个POJO,因此具有很好的代码复用性。
—  Action类无需与Servlet API耦合,因此进行单元测试非常简单。
—  Action类的execute方法仅返回一个字符串作为处理结果,该处理结果可映射到任何的视图,甚至是另一个Action。
3.Struts 2与Struts 1的对比
(1)Action实现类方面:Struts 1要求Action类必须继承一个抽象基类;Struts 1的一个具体问题是使用抽象类编程而不是接口。Struts 2 Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制的服务成为可能。
(2)Servlet依赖方面的对比:Struts 1 Action依赖于Servlet API,因为Struts 1 Action的execute方法中有HttpServletRequest和HttpServletResponse方法。
(3)可测性方面的对比:测试Struts 1 Action的一个主要问题是execute方法依赖于Servlet API,这使得Action的测试要依赖于Web容器。Struts 2 Action可以通过初始化、设置属性、调用方法来测试。 
分享到:
评论

相关推荐

    struts2.0struts2.0struts2.0struts2.0struts2.0struts2.0

    struts2.0struts2.0struts2.0struts2.0struts2.0struts2.0struts2.0struts2.0struts2.0struts2.0

    struts2.0中文教程

    01 为Struts 2.0做好准备 02 常用的Struts 2.0的标志(Tag) 03 Struts 2.0的Action讲解 04 在Struts 2.0中国际化(i18n)您的应用程序 05 转换器(Converter)——Struts 2.0中的魔术师 06 在Struts 2.0中实现表单...

    Struts2.0视频教程+struts2.0中文教程

    Struts2.0视频教程,struts2.0中文教程,Struts2.0视频教程,struts2.0中文教程,

    sstruts2.0 struts2.0

    sstruts2.0 struts2.0sstruts2.0 struts2.0sstruts2.0 struts2.0sstruts2.0 struts2.0sstruts2.0 struts2.0sstruts2.0 struts2.0sstruts2.0 struts2.0sstruts2.0 struts2.0sstruts2.0 struts2.0

    struts2.0的数据校验框架struts2.0的数据校验框架

    struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架

    Struts 2.0系列(MAX)

    Struts 2.0系列(MAX),pdf格式,全方位介绍struts2: 常用的Struts 2.0的标志(Tag)介绍 Struts 2.0的Action讲解 在Struts 2.0中国际化(i18n)您的应用程序 转换器(Converter)——Struts 2.0中的魔术师 在Struts ...

    JavaEE源代码 Struts2.0

    JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0...

    struts2.0jar包

    struts2.0jar包 struts2.0包 struts2.0源文件

    Struts2.0 Jar包

    此为Struts2.0最新Jar包,方便各位用于Struts2.0的开发.

    struts 2.0 详细配置

    struts 2.0 详细配置 struts 2.0 详细配置 struts 2.0 详细配置

    Struts 2.0

    清晰的介绍了Struts 2.0框架的工作流程,Action线程安全,程序入口,配置文件。

    Struts2.0学习Struts2.0文档

    为Struts 2.0做好准备 Struts作为MVC 2的Web框架,自推出以来不断受到开发者的追捧,得到用广泛的应用。作为最成功的Web框架,Struts自然拥有众多的优点: MVC 2模型的使用 功能齐全的标志库(Tag Library) 开放...

    struts2.0入门案例

    struts2.0 入门案例、简单的struts2.0入门案例 2.0配置包,基础

    struts2.0源代码

    struts2.0源代码(有关于struts2.0实现上传与下载和如何操作数据库的源代码),非常有用

    struts2.0的数据校验struts2.0的数据校验

    struts2.0的数据校验struts2.0的数据校验struts2.0的数据校验struts2.0的数据校验struts2.0的数据校验struts2.0的数据校验

    struts2.0的基本jar包

    struts2.0的基本jar包,用于开发struts2.0的项目

    Struts2.0中文教程权威版

    Struts 2权威指南——第1章 Struts 2概述.doc Struts 2权威指南——第2章 Struts 2下的HelloWorld.doc Struts 2权威指南——第3章 Struts 2基础.doc 01 为Struts 2.0做好准备 02 常用的Struts 2.0的标志(Tag) 03 ...

    struts2.0的特点

    struts2.0的特点

Global site tag (gtag.js) - Google Analytics