




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉科技大学硕士学位论文第1 页 摘要 随着j a v ae e 技术的发展,j a v ae e 在企业级软件开发中占的地位也同益重要,但是作 为传统的基于e j b 的j a v ae e 架构开始越来越不能满足一些企业对应用开发新的要求。传 统的基于e j b 的j a v ae e 架构其优势在于高级j a v ae e 特性和分布式应用,但是很多项目 对这些高级特性和分布式特性要求并没有要求,而且,这些高级特性和分布式应用较为复 杂的开发和配置大大降低了企业的开发速度,也增加了企业的开发成本。本文针对这一问 题,提出了一种基于开源框架的轻量级j a v ae e 开发架构的解决方案。 本文对w e b w o r k 、s p r i n g 、h i b e r n a t e 框架进行研究,具体分析各个框架在w e b 应用的 不同层次上所发挥的作用。并整合三种框架,设计出一个适合企业w e b 应用的架构。并对 s p r i n g 和w e b w o r k 、h i b e m a t e 整合的耦合性进行深入的分析研究,提出了一种基于 b a s e a c t i o n 和h i b e r n a t e g e n e r i c s u p p o r t 类的框架整合解耦方案。 其中,w e b w o r k 是一个实现了m v c 模式的w e b 应用框架,它全面减轻了构建多层w e b 应用的负担。轻量级容器使用依赖注入的设计原理,可以动态地使系统主要组件之间的耦 合变松散;s p r i n g 是一种多层的j a v ae e 应用轻量级框架,是为解决企业应用程序开发复杂 性而创建的;h i b e m a t e 是一个开源的持久层框架,它全面减轻了数据库开发的复杂度,使 系统具有更好的性能和移植性。 最后作者将此架构方案应用到工业消防综合管理系统项目的开发中。通过项目的完成 和试用,不仅证明了该方案的可行性和实用性,而且证实了采用该架构的系统具有更好的 性能、可扩展性和可维护性。它能被广泛的应用到其它类似系统的建设中,也能被借鉴到 其它相关的项目。 关键词:j a v ae e ;w e b w o r k ;s p r i n g ;h i b e r n a t e a b s t r a c t w i t ht h ed e v e l o p m e n to ft h ej a v ae et e c h n o l o g y , j a v ae ei sb e c o m i n gm o r ea n dm o r e i m p o r t a n ti ne n t e r p r i s e sd e v e l o p m e n t h o w e v e rt h et r a d i t i o n a lj a v ae ef r a m e w o r kw h i c hi s b a s e do nt h ee j ba r c h i t e c t u r ei sb e c o m i n gm o r ea n dm o r ec a l ln o ts a t i s f yt h en e w r e q u e s t sf r o m e n t e r p r i s e s m a n yp r o j e c t sd o n tn e e da d v a n c e dj a v ae ec h a r a c t e r i s t i c sa n dd i s t r i b u t e d a p p l i c a t i o nw h i c ha r et h ea d v a n t a g eo ft h et r a d i t i o n a lj a v ae ef r a m e w o r k , s ot h ec o m p l e x d e v e l o p m e n t ,c o n f i g u r a t i o n , d e p l o yo fa d v a n c e dj a v ae ec h a r a c t e r i s t i c sa n dd i s t r i b u t e d a p p l i c a t i o nd e p r e s st h ed e v e l o p m e n ts p e e dg r e a t l y i ti n c r e a s e st h ee n t e r p r i s e sc o s ta l s o t h i s p a p e rf o c u so nt h ep r o b l e m s ,g i v e sal i g h t - w e i g h tj a v ae ed e v e l o pf r a m e w o r ks o l u t i o np r o j e c t b a s e do no p e n s o u r c e t l l i sp a p e rd i dr e s e a r c ho nw 曲w b r k ,s p r i n ga n dh i b e r n a t ef r a m e w o r k s ,a n da n a l y z e de a c h f r a m e w o r k sf u n c t i o n i n 均a p p l i c a t i o nl a y e r a r c h i t e c t u r ei si n t e g r a t e dw i t ht h et h r e e f r a m e w o r k sw h i c hi ss u i t a b l ef o re n t e r p r i s ew e ba p p l i c a t i o n t h i st h e s i sm a d ed e e pa n a l y s i sa n d r e s e a r c ho nc o u p l i n go fi n t e g r a t i o nb e t w e e ns p r i n ga n dw 曲w b r k ,h i b e r n a t ea n dp u tf o r w a r da s o l u t i o nt ol o o s e c o u p l i n g o f i n t e g r a t i o nb a s e d o nt h ec l a s so fb a s e a c t i o na n d h i b e m a t e g e n e r i c s u p p o r t w 曲w b r kw h i c hi m p l e m e n t sm v c p a r e mi saw 曲a p p l i c a t i o nf r a m e w o r ka n di tl e s s e nt h e b u r d e no fb u i l d i n gm u l t i t i e r w 曲a p p l i c a t i o n 。l i g h t - w e i g h tc o n t a i n e ri sd e s i g n e dw i t h d e p e n d e n c yi n j e c t i o na n dc a nm a k em a i nc o m p o n e n tl o o s ec o u p l i n gd y n a m i c a l l y s p r i n gw h i c h i sd e s i g n e df o rs o l v i n gt h ec o m p l e x i t yo fd e v e l o p i n ge n t e r p r i s ea p p l i c a t i o n p r o g r a mi s a m u l t i - t i e rj a v ae el i g h t w e i g h tf r a m e w o r k h i b e r n a t ei sa no p e ns o u r c ep e r s i s t e n c ef r a m e w o r k , i tr e d u c e e st h ec o m p l e x i t yo f d e v e l o p i n gd a t a b a s ea n dm a k es y s t e mp o r t a b l e f i n a l l y , t h i sa p p r o a c ht oj a v ae ea r c h i t e c t u r ei sa p p l i e dt ot h ed e v e l o p m e n to fi n d u s t r yf i r e p r o t e c t i o nm a n a g e m e n ts y s t e m b yt h ep r o j e c t ,i th a sn o to n l yp r o v e nf e a s i b l ea n d p r a c t i c a l ,b u t a l s ot u r n e do u tt ob em o r es t a b l ea n ds e a l a b l e i tc a nb ew i d e l ya p p l i e dt oo t h e rs i m i l a rs y s t e m a n di tc a nb eu s e df o rr e f e r e n c eb yo t h e rr e l e v a n tp r o j e c t s k e y w o r d s :j a v ae e ; w e b w o r k ;s p r i n g ;h i b e r n a t e 武汉科技大学 研究生学位论文创新性声明 本人郑重声明:所呈交的学位论文是本人在导师指导下,独立进行研 究所取得的成果。除了文中已经注明引用的内容或属合作研究共同完成的 工作外,本论文不包含任何其他个人或集体已经发表或撰写过的作品成果。 对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 论文作者签名:查墨丝日期: 细8 段乡 研究生学位论文版权使用授权声明 本论文的研究成果归武汉科技大学所有,其研究内容不得以其它单位 的名义发表。本人完全了解武汉科技大学有关保留、使用学位论文的规定, 同意学校保留并向有关部门送交论文的复印件和电子版本,允许论文被查 阅和借阅,同意学校将本论文的全部或部分内容编入有关数据库进行检索。 论文作者签名:蔓堡丝 指导教师签名:0 斗 日 期:逆曼:! 兰:竺 武汉科技大学硕士学位论文第1 页 第一章绪论 1 1 选题背景及意义 随着软件技术的发展,软件规模的扩大,其复杂度同益升级。设计者或者开发人员将 新的设计或者开发建立在以往的工作基础上,复用以往成功的案例。因此,人们越来越意 识到软件重用技术的重要性,设计模式川和框架【2 】应运而生。开源软件的兴起,使得框架 更是层出不穷。架构是软件系统从整体到部分的最高层次的划分,一般由多个不同领域的 框架组成。个成功的软件需要有一个成功的架构,但软件架构的建立是一个复杂而有待 持续改进的过程,软件人员不可能对每个不同的项目做不同的架构,而总是尽量重用以前 的架构,或开发出尽量通用的架构方案。 目前随着j a v ae e 标准的诞生及推广,企业应用方面采用j a v ae e 体系架构方案已经 发展成为一种潮流。其中,j a v ae e 的体系架构将一个系统划分为w e b 和e j b 两个主要部 分,从设计上抽象为表现层、业务逻辑层和数据持久层。采用w e b 技术来实现表现层, e j b 规范实现业务逻辑层和数据持久层,这三个层次从一个高度将j a v ae e 分离开来,实 现了解耦的目的,最大限度的实现了软件的复用技术【3 】。在此j a v ae e 的经典架构中,所 有数据访问都要通过e n t i t yb e a n ,业务对象都是带远程接1 2 的无状态s e s s i o nb e a n ,运行 在e j b 容器中。不过,e j b 是一种重量级的高度侵入性的框架规范,重量级在于它的分布 式应用,高侵入性是指指定了众多实现者必须遵从的接口和规范。其后果就是使得系统部 署复杂、运行缓慢、测试困难、资源消耗代价高,而且基于侵入性框架设计开发,耦合性 能高,不易分离。为了解决传统j a v ae e 架构中的不足和满足企业开发新的要求,本文提 出了基于j a v a e e 的轻量级框架解决方案。一 一个典型的基于j a v ae e 的轻量级框架,它的j a v a 类都运行在同一个j v m 中。业务 对象是用p o j o 实现的,并在一个控制反转的容器中运行。所有对象需要部署在i o c 容器 中运行但它们并不依赖于容器。开发者可以在应用服务器之外,用普通的j u n i t 测试用例 来测试它们。所有的调用都是针对业务接口,而不是针对业务对象的实现类,以确保高度 的接插性。借助a o p ,可以为p o j o 业务对象提供声明性事务管理和其他横切性的企业级 服务。事务的划分将由业务逻辑层或者更为合理的容器基础设施负责。业务对象是无状态 的,大多数时候,p o j o 业务对象是多线程的无状态服务对象。w e b 层是业务逻辑层之上 的一个薄层,只负责处理用户输入,并将业务处理的结果展示给用户。数据访问层使用轻 量级的o r 映射层,提供透明的持久化【弘7 1 。 当前,主流的轻量级框架有s t r u t s l x 、w e b w o r k 、s t r u t s 2 、j s f 、s p r i n g 、h i b e r n a t e 、 i b a t i s 等,需要我们从众多的框架中,选择合适的轻量级框架进行整合,形成一个高效的 架构方案,以满足企业级w e b 应用的开发需求【8 。本文中,采用的是w e b w o r k 、s p r i n g 、 h i b e r n a t e 集成的架构,其中,w e b w o r k 的m v c 框架极大改进了代码重用,而且代码结构 清晰;h i b e r n a t e 的o r m 特性使得数据库移植和操作变得更简单。使用基于该三个框架整 合的架构可以实现代码重用、设计重用,让代码更容易被人理解、保证代码可靠性,简化 第2 页武汉科技大学硕士学位论文 开发的复杂性,提高系统的可扩展性和可维护性。可以让开发过程中的分工更加明确,对 于提高工作效率,具有重要的现实意义。 1 2 主要研究内容和所做的工作 本课题主要建立一个满足j a v ae e 规范的轻量级框架集成的架构,主要应用于对j a v a e e 高级特性和分布式特性要求不高的企业级w e b 应用。通过研究比较目前j a v ae e 领域 流行的几种开源框架,选用了w e b w o r k 、s p r i n g 和h i b e r n a t e 框架进行整合,使其成为一 个具有一定集成度的软件开发架构,在集成框架的过程中,着重讨论框架相互整合改进, 以降低框架之间耦合性,提高该架构的复用性能。并将该架构在工业消防综合管理系统中 加以实现。通过系统的运行效果来看,相对于传统的j a v ae e 架构,本架构有较低的开发 复杂度和较高的代码重复度,大大加快了开发工作的效率。 本文所做的具体工作如下: 1 叙述了j a v ae e 的架构技术,将设计模式、框架、架构、轻量级框架等概念做了比 较清晰的介绍,这些是搭建一个软件架构最基本核心的概念。 2 分析比较了当前最流行的几种开源框架,结合具体项目讨论相关框架的适用与取 舍;着重讨论了w e b w o r k 、s p r i n g 和h i b e r n a t e 三个框架的整合。这也是构建好一个软件 架构的关键的地方。 3 在整合三个框架的同时,对所参与的实际开发项目的需求分析、功能以及设计思 想做了详细的叙述。 4 将改进后的框架的代码整合应用到项目相关模块实际开发工作之中。 5 对实现的架构进行了总结,并对框架中的不足和今后改进作了说明。 1 3 本文的组织和结构 论文各章节内容安排如下: 第一章:绪论概述了论文选题背景与意义,对本课题主要研究内容、所实现的目的 做了介绍,详细列出了具体所做的工作。 第二章:j a v ae e 架构的技术基础介绍了j a v ae e 相关概念、j a v ae e 体系架构、模 式和框架、e j b 和轻量级框架、三种开源框架w e b w o r k 、s p r i n g 和h i b e r n a t e 的结构以及 相关核心概念,这些是搭建一个软件架构最基本核心的概念。 第三章:轻量级框架的设计与整合分析了三种框架各自的特点与不足,集成三种框 架的设计,着重讨论了w e b w o r k 框架与s p r i n g 框架整合、h i b e r n a t e 框架与s p r i n g 框架整 合的方法,最后说明了整合后框架的优点。 第四章:应用实例首先进行了系统的需求分析,接着进行了系统的系统开发的管理 性和技术性原则分析,然后分析了系统流程,最后重点分析了三大功能模块,并以核心模 块部分作为典型实现,同时权限安全也用代码予以实现。 第五章:总结和展望对实现的架构进行了总结,并对不足和今后改进作了说明。 武汉科技大学硕士学位论文第3 页 第二章j a v ae e 架构的技术基础 2 1j a v ae e 相关概念 j a v a e e 是s u n 公司在1 9 9 9 年6 月推出的技术规范,是建立在j a v a 2 平台上的企业级 分布式网络系统开发要求的最佳解决方案。最初s u n 公司给它取名为j 2 e e ,后来当j d k 升级到1 5 之后,改名为j a v ae e ,本文按s u n 公司规范统一称为j a v ae e 。j a v ae e 主要是 由一些应用程序编程接1 3 ( a p i ) 组成的,可以被用来创建大规模的、分布式的、基于组件的、 多层的应用程序;j a v ae e 和组成它的a p i 的规范一起构成了创建和部署企业应用程序的 标准。j a v ae e 既提供了用于管理应用程序的基础设施,又提供了用于建立应用程序的a p i 服务。作为平台,j a v ae e 提供了个多层结构的分布式的应用程序模型,该模型具有重 用组件的能力、基于扩展标记语言( x m l ) 的数据交换、统一的安全模式和灵活的事务控制 机制。在这个体系结构中,应用开发者的注意力可以集中在封装业务逻辑和业务规则上, 一切与基础结构服务相关的问题以及底层分配问题都由应用程序容器或者服务器来处理。 j a v ae e 提供了事务处理、对象生存控制、状态维持、并发控制、安全检测、资源共享等 系统服务【9 1 们,这些服务只要通过简单的配置就可以在j a v ae e 应用服务器上实现。 2 1 1j a v ae e 体系架构 随着j a v ae e 标准的诞生及推广,企业应用方面采用j a v ae e 体系架构已经发展成为 一种潮流。j a v ae e 的体系架构特别适用于使用j a v a 的基于w e b 的企业应用的开发与部署 【l2 1 。软件开发者和企业,使用j a v ae e 体系架构能够快速地进行企业应用的开发和部署, 从而有效地替代了传统的两层和多层结构【1 3 】。 j a v ae e 体系架构图如图2 1 所示: 客户端 j a v ae e 服务器 数据库服务器 第4 页武汉科技大学硕士学位论文 图2 1 j a v ae e 体系架构图 整个应用系统由客户层( c l i e n t ) 、w 曲层( w e b ) 、业务逻辑层( b u s i n e s sl o g i c ) 和企业信息 系统层( e n t e r p r i s ei n f o r m a t i o ns y s t e m s ) 构成: ( 1 ) 客户层 应用客户端部分,它可以是基于w e b 应用的,也可以是不基于w c b 的。在一个基于 w e b 的j a v ae e 中,浏览器负责显示由运行在w e b 层的w e b 组件生成的包含各种标记语 言( h t m l 、x m l 、x s l 等) 的w e b 页面,它可以通过运行在w e b 层中的j s p 页面和s e r v l e t 与j a v ae e 服务器中的业务层进行通信;一个不基于w e b 的j a v ae e 应用系统中,一个独 立的客户端程序是一些运行在基于网络系统中的j a v a 应用程序,可以通过远程方法调用 ( r m i i i o p ) 直接访问运行在企业j a v a b e a n ( e j b ) 容器中的e j b 组件,不基于w e b 的客户端程 序可能也包括一个j a v a b e a n s 类来管理用户输入,并将输入发送到业务逻辑层中运行的e j b 对象来处理。 ( 2 ) w e b 层 j a v ae e 的w e b 组件既可以是s e r v l e t 也可以是j s p 页面。s e r v l e t 是一种服务器端程序, 允许应用程序逻辑嵌入到超文本传输协议( h t t p ) 请求响应过程中。j s p 提供了一种在网页 中嵌入组件的方式,它是一个基于文本的文档,由w e b 容器编译成相应的s e r v l e t ,这样在 应用程序逻辑和表示逻辑之间有了清楚的分界。w e b 层也可以包括一个j a v a b e a n s 类来管 理用户输入,并将输入发送到业务逻辑层中运行的j a v a b e a n 或e j b 对象来处理具体业务。 ( 3 ) 业务层 业务层也叫e j b 层或应用层,它由e j b 器服务器和e j b 组件组成。一般情况下,许 多开发商把w e b 服务器和e j b 服务器产品结合在一起发布,称为应用服务器。e j b 层用来 实现企业级信息系统的业务逻辑,这是企业级应用的核心,由运行在业务层中的e j b 来处 理,一个b e a n 从客户端接收数据、处理,然后把数据送到企业信息系统层次存储起来。同 样,一个子b e a n 也可以从企业信息系统层取出数据,发送到客户端程序。业务层中的e j b 要运行在容器中,容器解决了底层的问题,如事务处理、生命周期、状态管理、多线程、 安全管理、资源池等。 ( 4 ) 企业信息系统层 企业信息系统层运行企业信息系统软件,包括企业基础设施系统,例如企业资源计划 ( e r p ) 、客户关系管理( c r m ) 、数据库系统及其它遗留信息系统( l e g a c yi n f o r m a t i o n s y s t e m s ) 。 业务层和w e b 层共同组成了三层j a v ae e 应用的中间层,其他两层是客户端层和存储层 或企业信息系统层。 2 1 2 模式与框架 虽然j a v ae e 分层模型提供了一个很好的企业应用解决方案,但随着软件规模不断扩 大,复杂度日渐升级,开发人员面临问题也越来越多。开发人员需要将以往开发成功的案 武汉科技大学硕士学位论文第5 页 例复用到新的软件开发上,因此,人们越来越意识到软件重用技术的重要性,模式与框架 技术应运而生。 ( 1 ) m v c 模式 m v c 模式是一个设计模式,更准确的说是一个架构模式【i 】。一个架构模式描述软件系 统里的基本的结构组织或纲要,提供些事先定义好的子系统,指定它们的责任,并给出 把它们组织在一起的法则和指南。m v c 设计模式结构如图2 2 所示: - 万法调用 ,事件 图2 2m v c 结构图 模型表示应用程序的业务逻辑,它是应用程序的核心,必须能够满足大多数客户的需 求,包括保证应用程序各组件的事务整合、维护并快速获取应用数据,支持事务工作流的 协调以及在已有应用程序中集成新的应用组件等。将业务规则封装到组件中有利于测试、 改进质量和促进重用。 视图实现模块的外观,它是应用程序的外在表现。它可以访问模型的数据,却不了解 模型的情况,同时它也不了解控制器的情况。当模型发生改变时,视图会得到通知,它可 以访问模型的数据,但不能改变这些数据。w e b 界面的开发人员不需要了解或关心数据库 发生什么事情,或者事务逻辑进行了什么操作。 控制器接受用户请求,把用户数据传给业务逻辑模块,并调用相应的业务逻辑模块进 行处理,最后根据用户所需要的响应调用相应的视图模块生成结果页面,返回浏览器。它 将模型和视图联系在一起。 ( 2 ) m v c 模式在j a v ae e 平台上的实现 通过m v c 模式来设计一个基于j a v ae e 技术的w e b 应用的开发平台,在此平台中, 模型一般由j a v a b e a n 或者e j b 来充当,因为它们能够处理绝大部分事务逻辑和数据结构, 第6 页武汉科技大学硕士学位论文 还能与数据库或文件系统进行交互,承担维护应用程序数据的责任;控制器一般是用s e r v l e t 来实现的,因为它负责接收事件、确定合适的处理程序、调用处理程序并触发合适的响应, 并不需要向客户端输出信息;视图的重心在于页面设计,j s p 很适合编写动态页面,是开 发页面模块的最好选择。因此通过此平台能够提供大量的抽象度高且功能强大的基础组件 框架和丰富灵活的客户化程序和应变体系,提高软件性能和可维护性,达到提高软件质量 的目的。其体系结构如图2 3 所示: 企业服务器 高田瞻蕊罢 请求 二l ,u ,j 嘎7 j 面 卜、 l 控制器 卜、i 軎量 l 1 ( s e r v e t ) 一币厂、 浏 、 一 览 ,黻f 。,罴, 数据源 器 1 响应 j 视图 含二 ( j s p ) 图2 3j a v ae em v c 体系结构图 ( 3 ) 框架 j a v ae e 规范描述了一系列逻辑部件,描述了这些部件的职责和它们的规范,约定了 这些部件之间交互的接口和协议、标准,规划出一个如何利用这些逻辑部件来实现一个应 用系统的蓝图,即是一个软件架构。而根据这一设想,各厂商开发出了各自的产品,包括 开发工具和应用容器,开发者利用这些工具和容器就能方便的开发出符合j a v ae e 规范的 应用程序。这些工具和容器就是软件框架。 所以说框架不是现成可用的应用系统,它只是一个半成品,是针对一个特定问题的解 决方案和辅助工具。 框架的使用除了提高系统的重用性外,另一个重要特性就是解耦性。而衡量应用系统 设计开发水平高低的标准就是解耦性;应用系统使用框架使得各个功能相互依赖性降低, 更好地实现软件的可维护性、可拓展性等设计目标。 j a v ae e 平台划分为w e b 层和服务层,从设计上抽象为表现层、业务逻辑层和数据持 久层,使用e j b 规范实现业务逻辑层和数据持久层,w e b 技术实现表现层,通过这三个层 次分别实现来达到解耦目的。 2 1 3 e j b 与轻量级框架 e j b 就是一个企业级的j a v a b e a n ,是一个可重用的,可移植的j a v ae e 组件。e j b 必 须运行在e j b 容器罩,允许丌发者只关注与b e a n 中的业务逻辑而不用考虑象事务支持, 安全性和远程对象访问等复杂和容易出错的事情。e j b 以p o j o 形式丌发,开发者可以用 元数据注释来定义容器如何管理这些b e a n 。 根据复杂程度人们习惯把e j b 称为重量级,把其他的开源框架称为轻量级框架。 武汉科技大学硕士学位论文第7 页 e j b 面向的是大型的应用项目,提供全方位的业务服务,由于试图解决太多的问题, 使得e j b 的使用过于复杂,消耗大量的系统资源,开销较大。正因为e j b 存在诸多问题, 轻量级框架从2 0 0 3 年开始逐渐开始流行,它们提供了管理业务对象和提供企业级服务的 能力,而不必求助于沉重的e j b 基础设施。s p r i n g 是目前最为成熟,应用最为广泛的一种 轻量级框架,将s p r i n g 和其他开源框架如表示层的w e b w o r k 数据持久层的h i b e r n a t e 进行 整合,可以形成一个具有一定集成度的软件开发架构。 下面就对这三个框架的体系结构和工作原理作简要介绍。 2 2 表示层框架w e b w o r k w e b w o r k 是由o p e n s y m p h o n y 组织开发的m v c 模式j a v a e ew e b 框架。现在 w e b w o r k 已经被拆分成了x w o r k l 和w e b w o 此两个项目。x w o r k 是一个标准的c o m m a n d 模式实现,并且完全从w e b 层脱离出来。x w o r k 提供了很多核心功能:前端拦截器 ( i n t e r c e p t o r ) ,表单验证,类型转换,基于o g n l 的表达式语言,i o c 容器等。w e b w o r k 2 建立在x w o r k 之上,处理h t t p 的响应和请求。支持多视图表示,视图部分可以使用j s p , v e l o c i t y ,f r e e m a r k e r ,j a s p e r r e p o r t s ,x m l 等。 2 2 1w e b w o r k 框架工作流程 w e b w o r k 框架是m v c 模式的一种实现。下图2 4 显示了w e b w o r k 的工作流程f 1 6 】。 蹦e r v l e t r e q u e s t7 i fw 曲w 。出血n o n c 。m e x t c i c 彻砩 i o t h e rf i l t e r s ( s i t e sh ,c t c ) i l1 w e b w o r kf d t e r d i s 仁a c h e r 1 缴t i o n 嗍 睇班。,一| 王n v o c a t l o n a e = 。 jj #, h t 百c e cc o r 1 | 匹= 苗 一 习 l ,p 7 j a 冈矗丘g u r a t i “ 二一 ?| t n t 一。t 2 章于竺赫。 ,轰 i n t e r c e tt o t3l 魏勺b w ;d ct a g 1 ,; 岛1 h t v 口恤m 仟订m l r 荔7 习 i ,登。i 踊袤,_ f 册池耐i 、i 警la c t i o n 参 k 盟 & 如t ! 到t e m ,o 。 蕈l j s p s e f v l e tf i l t e r s | l字啪t o r 3l f r e e m a r k e r e t c wf , 踟渐c o t e 豹 惫。订:i h l 协r c e d t o r s l 1 i u s e rc r e a t e d ,j * ;产啪1 ,叫壬盘b s e f v k t r 呦。憧i 7 - 图2 4w e b w o r k 的工作流程图 ( 1 ) 一个初始的h t t p s e r v l e t r e q u e s t 被发送到s e r v l e t 容器( 如t o m c a t ) ,这个请求经 第8 页武汉科技大学硕士学位论文 过一个标准的f i l t e r 链到达a c t i o n m a p p e r 。 如果要在应用程序中整合其他的技术如s i t e m e s h ,就需要使用可选 a c t i o n c o n t e x t c l e a n u pf i l t e r 。 ( 2 ) a c t i o n m a p p e r 判断这个请求是否需要调用a c t i o n 。如果需要调用a c t i o n ,则通 过f i l t e r d i s p a t c h e r 把请求委托给a c t i o n p r o x y 。 ( 3 ) a c t i o n p r o x y 通过w e b w o r k 的配置文件管理器c o n f i g u r a t i o nm a n a g e r 读取 x w o r k x m l 文件里的配置信息。然后创建一个实现了命令模式的a c t i o n l n v o c a t i o n 。这一过 程包括在调用a c t i o n 本身之前调用所有的i n t e r c e p t o r ( b e f o r e ( ) 方法) 。 ( 4 ) 一旦a c t i o n 方法返回,a c t i o n l n v o c a t i o n 就要查找x w o r k x m l 文件中该a c t i o n 的 结果码( a c t i o nr e s u l tc o d e ) 所对应的r e s u l t ,然后执行这个r e s u l t 。 ( 5 ) r e s u l t 调用j s p 或f r e e m a r k e r 模板来呈现页面。当呈现页面时,模板可以使用 w e b w o r k 提供的一些标签,其中一些组件可以和a c t i o n m a p p e r 一起工作来为后面的请求 呈现恰当的u r l 。 ( 6 ) 最后i n t e r c e p t o r 被再次执行( 顺序和开始相反,调用a f t e r ( ) 方法) 返回 h t t p s e r v l e t r e s p o n s e 。 可以发现w e b w o r k 中创建控制器代理的方式,本质就是一种a o p ( 面向切面编程) 编程方式。 2 2 2w e b w o r k 的核心概念 1a c t i o n : a c t i o n 在m v c 模式中担任控制部分的角色,在w e b w o r k 中使用得最多,用于接收页 面参数,起到对h t t p s e r v l e t r e q u e s t 判断处理作用。每个请求的动作都对应于一个相应的 a c t i o n ,一个a c t i o n 是一个独立的工作单元和控制命令,它实现x w o r k 里的a c t i o n 接口 的e x e c u t e ( ) 方法。 e x c u t e 0 方法是a c t i o n 类罩最重要的部分,它执行返回s t r i n g 类型的值,代表在页面执 行完后的结果,在a c t i o n 中返回的值一般使用它上面定义的标准静态字符常量,有五种状 态: ( 1 ) s u c c e s s :a c t i o nj 下确的执行完成,返回相应的视图; ( 2 ) n o n e :表示a c t i o n 正确的执行完成,但并不返回任何视图; ( 3 ) e r r o r :表示a c t i o n 执行失败,返回到错误处理视图; ( 4 ) i n p u t :a c t i o n 的执行,需要从前端界面获取参数,i n p u t 就是代表这个参数 输入的界面,一般在应用中,会对这些参数进行验证,如果验证没有通过,将 自动返回到该视图; ( 5 ) l o g i n :a c t i o n 因为用户没有登陆,将返回该登陆视图,要求用户进行登陆验 证。 武汉科技大学硕士学位论文第9 页 a c t i o n 工作原理:用户通过页面输入自己的信息,提交表单到动作a c t i o n ,它将由 f i l t e r d i s p a t c h e r 调度,从配置文件x w o r k x m l 里查找与之匹配的a c t i o n 名字,x w o r k 框架 会负责去创建这个a c t i o n 类的对象并调用e x e c u t e ( ) 方法进行用户相应的a c t i o n 操作。正确 执行e x e c u t e ( ) 方法返回s t r i n g 类型数据“s u c c e s s ”之后,它会请求再派遣到r e s u l t 的执行 结果页面。 在配置文件x w o r k x m l 里有一个关键的配置: ,通过 i n t e r c e p t o r - r e f 标签设置这个a c t i o n 用到的拦截器( i n t e r c e p t o r ) ,这个拦截器将在a c t i o n 的 e x e c u t e ( ) 方法执行之前调用,作用是将r e q u e s t 请求的参数值通过表达式语言设置到相应 a c t i o n 的模型里。也就是通过这个方法将表单中的数据注入到模型中。这里用到了 w e b w o r k 的另一个核心的技术拦截器( i n t e r c e p t o r ) 。 2i n t e r c e p t o r : i n t e r c e p t o r ( 拦截器) 将a c t i o n 共用的行为独立出来,在a c t i o n 执行前后运行。这也 就是常说的a o p ( a s p e c to r i e n t e dp r o g r a m m i n g ,面向切面编程) ,它是分散关注的编程 方法,它将通用需求功能从不相关类中分离出来;同时,能够使得很多类共享一个行为, 一旦行为发生变化,不必修改很多类,只要修改该行为就可以了。 i n t e r c e p t o r 将很多功能从我们的a c t i o n 中独立出来,大量减少了我们a c t i o n 的代码, 独立出来的行为具有很好的重用性。x w o r k 、w e b w o r k 的许多功能都是由i n t e r c e p t o r 实现, 可以在配置文件中组装a c t i o n 用到的i n t e r c e p t o r ,它会按照所指定的顺序,在a c t i o n 执行 前后运行。 i n t e r c e p t o r 可以分为w e b w o r k 默认实现和自定义实现两种。在x w o r k j a r 包 w e b w o r k d e f a u l t x m l 配置文件中有默认实现拦截器的定义,例如上面在介绍a c t i o n 中提到 的配置 就是默认实现的拦截器中的一种。 通常自定义实现的拦截器用于系统登录的权限的拦截,实现的步骤为: ( 1 ) 建立一个自己定义的i n t e r c e p t o r 类,该类实现c o r n o p e n s y m p h o n y x w o r k i n t e r c e p t o r i n t e r c e p t o r 接口。 ( 2 ) 在x w o r k x m l 配置文件中声明这个i n t e r c e p t o r 类,在 标签内部嵌 入标签 。 ( 3 ) 使用标签: o , j 建i n t e r c e p t o r 栈,让一组i n t e r c e p t o r 可以按次 序调用。 ( 4 ) 在所要用到的i n t e r c e p t o r 相关a c t i o n 配置中,加入 标签或 标签。 2 3 业务逻辑层框架s p r i n g s p r i n g 是一个开源框架,它由r o dj o h n s o n 为了解决企业应用开发的复杂性而创建的。 第1 0 页武汉科技大学硕士学位论文 传统j a v ae e 应用的开发效率低,应用服务器厂商对各种技术的支持并没有真正统一, 导致j a v ae e 的应用没有真j 下实现w r i t eo n c e 及r u n a n y w h e r e 的承诺。s p n n g 使用基本的 j a v a b e a i l 来完成以前只可能由e j b 完成的事情。 s p r i n g 作为开源的中间件,独立于各种应用服务器,甚至无须应用服务器的支持,也 能提供应用服务器的功能,如声明式事务等。s p r i n g 致力于j a v ae e 应用的各层的解决方 案,而不是仅仅专注于某一层的方案。可以说s p r i n g 是企业应用开发的“一站式”选择,并 贯穿表现层、业务层及持久剧1 7 】。 2 3 1 s p r i n g 框架结构 s p r i n g 框架包含许多特性,并被很好地组织在图2 5 所示的六个模块中。作为一个整 体来看,这些模块足以应付企业级应用系统开发的要求。但是在开发时,不需要将s p r i n g 框架中的这些基本模块全部加入系统中。开发人员可以根据需要任意选择适合系统应用的 模块并忽略其他的模块。 图2 5s p r i n g 组成模块图 下面,我们分别介绍各模块的功能与结构: c o r e 封装包是框架的最基础部分,提供i o c 和依赖注入特性。这里的基础概念是 b e a n f a c t o 叫,它提供对f a c t o 叫模式的经典实现来消除对程序性单例模式的需要,并真正 地允许从程序逻辑中分离出依赖关系和配置。 c o n t e x t ( 上下文) 封装包构筑于c o r e 封装包的基础之上,它提供了一种框架风格的 方式来访问对象,有些像j n d i 注册表。c o n t e x t 封装包继承了b e a n s 包的功能,还增加了 国际化( 1 1 8 n ) ,事件传播,资源装载,以及透明创建上下文。 d a o 提供了j d b c 的抽象层,它可消除冗长的j d b c 编码和解析数据库厂商特有的错 武汉科技大学硕士学位论文第
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 历史建筑群保护社区残疾人托养中心规划基础知识点归纳
- 2025年小学逻辑推理试题
- 海外衍生品市场风险管理研究-以青山集团伦镍市场“逼空”事件为例
- 混合现实编程培训研究-洞察阐释
- 高一地理第二节大气圈与天气气候《全球的气压带与风带》教学设计
- 学生社区思想政治工作的现实困境与创新路径
- 当前绿色金融体系发展现状与问题分析
- 2025至2030年中国热镀锌管外丝行业投资前景及策略咨询报告
- 2025至2030年中国混纺毛条行业投资前景及策略咨询报告
- 2025至2030年中国测缝计行业投资前景及策略咨询报告
- 特种设备“日管控、周排查、月调度”表格
- 24春国家开放大学《教育法学》终结性考试(大作业)参考答案
- 中国建筑信息模型(BIM)行业发展状况与前景趋势研究报告2024-2029年
- 小学科学学法指导
- 分级护理制度培训
- 寰枢关节错位
- 《泌尿系统检查》课件
- 关于水痘的护理查房
- 苏教版小学科学四年级下册各单元测试卷附答案
- 华中师大一附中2024届高二数学第二学期期末综合测试模拟试题含解析
- 公司股权投资管理制度
评论
0/150
提交评论