`
kidiaoer
  • 浏览: 818718 次
  • 性别: 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.0学习文档

    ### Struts2.0 学习文档知识点梳理 #### 一、Struts2简介与特点 **Struts2**是一个开源的MVC(Model-View-Controller)框架,用于简化Java Web应用程序的开发。它是Struts1的一个重大升级版本,吸取了Struts1的...

    Struts2入门教程。包括jquery集成等。入门必看

    - **系统总体设计**:从整体角度出发,描述如何设计包含Hibernate的系统架构。 - **系统用例图**:通过用例图展示系统的功能需求。 - **数据库设计**:介绍如何设计与Hibernate集成的数据库模型。 - **系统效果图...

    java学习网站

    #### JavaWeb进阶框架学习——Struts2.0 - **在web项目中使用Struts2**: - 配置Struts2的核心组件,如拦截器、配置文件等。 - 实现页面导航定义,控制业务数据等。 - 使用ActionSupport进行校验。 - 深入了解...

    java两年工作经验的简历模版(成功版).doc

    6. 框架应用:熟悉Spring框架,能与其他轻量级框架如Struts2.0和Hibernate进行集成开发。 7. 服务器部署:能熟练地在Tomcat服务器上部署和管理Java应用程序。 【工作经历】 - 公司1:未提供 - 部门:软件部 - 职务...

    个人博客系统源码下载

    是为了描述本项目的需求背景,总结本项目需要完成的开发任务,从而便于系统分析人员和 开发人员在此基础上进行总体设计和详细设计,便于手册编写人员以此为指导编写用户手 册。 本需求说明书的预期读者为 SmartBlog ...

    视频社区系统概要设计讲解.pdf

    在使用技术框架中,系统使用了J2EE技术、JSP技术、Struts逻辑框架、Hibernate3.2数据层框架、Ajax异步插件、Spring2.0技术、WEBSERVICE技术、数据缓存技术等。 在条件与限制中,系统设计应当表现出层次结构,设计...

    J2EE应用开发详解

    325 18.4.2 配置数据库连接池 327 18.5 HQL简介 328 18.6 小结 330 第19章 权限管理系统(Struts+Spring+Hiberante+Ajax) 331 19.1 需求分析 331 19.2 系统总体流程设计 331 19.3 系统设计 332 19.4 系统总体解析 ...

    基于PHP图书管理系统的设计与实现论文开题报告 (2).docx

    - **Struts框架**:一个用于构建企业级Java Web应用程序的开源框架,简化了应用的开发过程。 #### 四、系统功能模块 1. **用户登录**:验证用户身份,确保只有授权用户才能访问系统。 2. **用户管理**:包括用户...

Global site tag (gtag.js) - Google Analytics