欢迎来到天天文库
浏览记录
ID:38360403
大小:249.50 KB
页数:7页
时间:2019-06-11
《麦威兰J2EE作业》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Struts2框架分析摘要:本文对基于MVC模式,延续了Struts1和WebWork优势的WEB框架——Struts2框架的各个层次的组成、功能进行了详细的介绍。关键词:Struts2;框架;J2EE;引言ApacheStruts2是一个为企业级应用打造的优秀的、可扩展的Web框架。该框架旨在充分精简应用程序的开发周期,从而减少创建、发布、应用所花费的时间。而且对于Struts1有很多革命性的改进,但它并不是全新的框架,而是在WebWork框架的基础上发展起来的。所以也可以说Struts2是WebWork的升级,吸收了Struts1和WebWork的优势,稳定性、性能都有了很好的保证。
2、2.Struts2的起源和背景2.1Struts1在过去,Struts1是所有MVC框架中不容辩驳的胜利者。其程序运行流程如图2-1所示。图2-1Struts1的程序运行流程但是对于Struts1框架而言,因为它与JSP/Servlet耦合非常紧密,因而导致了许多不可避免的缺陷,还有支持的表现层技术单一、代码严重依赖于Struts1API。随着Web应用的拙见扩大,这些缺陷逐渐变成制约Struts1发展的的重要因素——这也是Struts2出现的原因。-7-2.2WebWorkWebWork来自另外一个优秀的开源组织:opensymphony。它采用了更加松耦合的设计,让系统的Action
3、不再与ServletAPI耦合。允许系统从B/S结构向C/S结构转换。而且相对于Struts1仅支持JPS表现层技术的缺陷而言,WebWrok支持更多的表现层技术。从处理流程上来看,WebWork与Struts1非常类似,他们的核心都有控制器组成,其中控制器都由两个部分组成:核心控制器ServletDispatcher,该控制器框架提供。业务逻辑控制器Action,该控制器由程序员提供。2.3Struts2的诞生在Struts2虽然是在Struts1的基础上发展起来的,但实质上是以WebWork为核心。Struts2为传统Struts1注入了WebWork的设计理念,统一了Struts1
4、和WebWork两个框架。Struts2大量大量使用拦截器来处理用户请求,从而允许用户的业务逻辑控制器与ServletAPI分离。后面我将详细的分析Struts2这个优秀的框架。2.4Struts技术的发展概况 经过六年多的发展,Struts1已经成为了一个高度成熟的框架,不管是稳定性还是可靠性都得到了广泛的证明。市场占有率超过20%,拥有丰富的开发人群,几乎已经成为了事实上的工业标准。但是随着时间的流逝,技术的进步,Struts1的局限性也越来越多地暴露出来,并且制约了Struts1的继续发展。 对于Struts1框架而言,由于与JSP/Servlet耦合非常紧密,因而导致了一些严
5、重的问题。首先,Struts1支持的表现层技术单一。由于Struts1出现的年代比较早,那个时候没有FreeMarker、Velocity等技术,因此它不可能与这些视图层的模版技术进行整合。其次,Struts1与ServletAPI的严重耦合,使应用难于测试。最后,Struts1代码严重依赖于Struts1API,属于侵入性框架。从目前的技术层面上看,出现了许多与Struts1竞争的视图层框架,比如JSF、Tapestry和SpringMVC等。这些框架由于出现的年代比较近,应用了最新的设计理念,同时也从Struts1中吸取了经验,克服了很多不足。这些框架的出现也促进了Struts的发展
6、。目前,Struts已经分化成了两个框架:第一个是在传统的Struts1的基础上,融合了另外的一个优秀的Web框架WebWork的Struts2。Struts2虽然是在Struts1的基础上发展起来的,但是实质上是以WebWork为核心的。Struts2为传统的Struts1注入了WebWork的先进的设计理念,统一了Struts1和WebWork两个框架。Struts1分化出来的另外一个框架是Shale。这个框架远远超出了Struts1原有的设计思想,与原有的Struts1关联很少,使用了全新的设计思想。Shale更像一个新的框架而不是Struts1的升级。本文下面的内容将主要讨论St
7、ruts2。-7-3.Struts2框架3.1Struts2的工作机制一个请求在Struts2框架被处理大致分为一下几个步骤,如图3-1所示:图3-1Struts2工作机制(1)客户端初始化一个指向Servlet容器(例如Tomcat)的请求;(2)这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其它框架的集成很有帮助,例如:Sit
此文档下载收益归作者所有