(计算机应用技术专业论文)基于j2ee的vseaf20框架数据持久层设计与实现.pdf_第1页
(计算机应用技术专业论文)基于j2ee的vseaf20框架数据持久层设计与实现.pdf_第2页
(计算机应用技术专业论文)基于j2ee的vseaf20框架数据持久层设计与实现.pdf_第3页
(计算机应用技术专业论文)基于j2ee的vseaf20框架数据持久层设计与实现.pdf_第4页
(计算机应用技术专业论文)基于j2ee的vseaf20框架数据持久层设计与实现.pdf_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 j 2 e e 作为现今最流行的分布式计算平台,已成为基于w e b 的企业应用系统的核心。 但多层的j 2 e e 体系结构在提高软件重用性和降低问题复杂性的同时,也使得代码庞大, 层与层之间的控制关系繁杂。于是人们将同类问题的解决方法进行抽象,抽取成一个轻 量级的框架。不同层次上选择不同的轻量级框架组合成一个w e b 整体框架,将会大大提 高软件的开发效率。 目前,针对对象关系不匹配这一问题,虽然可以通过直接内嵌s q l 或者数据访 问类的方法得到解决,却降低了系统应用的可维护性。为了简化数据持久过程中的复杂、 重复性的操作,出现了系列的数据持久层解决方案。因此,选择一种功能和性能上都 适合项目开发的解决方案成为一个至关重要的问题。 本文首先介绍了j 2 e e 多层设计思想,在此基础上阐述了不同层次上主流的轻量级框 架的基本构成和实现原理。然后,重点分析了数据持久层中不同解决方案的优缺点,将 数据持久化过程抽象细分,针对具体环节概括了影响数据持久层性能的因素并提出了相 应的优化措施。在具体的数据库平台上,结合优化措施对常用持久层解决方案进行了性 能测试,并详细分析了测试结果,归纳出了不同解决方案所适应的业务场景。针对 v s e a f 2 0 框架数据持久层的需求,分析s p r i n gd a o 设计思想,结合性能测试结果,选用 i b a t i s 作为持久化解决方案。最后分模块详细阐述了各个模块的功能说明、处理流程及 接口实现等。设计完成后,对框架持久层进行了性能测试,结果表明,持久层设计达到 预期的目的。 关键词:j 2 e e ,轻量级框架,数据持久化,v s e a f 2 0 ,i b a t i s d e s i g na n dr e a l i z a t i o no fv s e a f 2 0f r a m e w o r kb a s e do nj 2 e e z h o ut a o ( c o m p u t e r a p p l i c a t i o nt e c h n o l o g y ) d i r e c t e db ys e n i o re n g i n e e rz h a n gw e n d o n gl e c t u r eg u l i h o n g a b s t r a c t a st h em o s tp o p u l a rd i s t r i b u t e dc o m p u t i n gp l a t f o r mi nn o w a d a y s ,j 2 e et e c h n o l o g yh a s b e c o m eac o r eo fa ne n t e r p r i s e sa p p l i c a t i o ns y s t e mw h i c hi sb a s e do nt h ew e b h o w e v e r , t h e m u l t i - l a y e rj 2 e ea r c h i t e c t u r ei m p r o v e st h er e u s a b i l i t yo fas o f t w a r ea n dd e c o m p o s e st h e c o m p l e x i t yo fap r o b l e m ,w h i c hm e a n w h i l em a k e sc o d e sl a r g ea n dc o n t r o lr e l a t i o n s h i p s a m o n gl a y e r sm o r ec o m p l i c a t e d t h u sp e o p l ea b s t r a c tt h es o l u t i o n so ft h es i m i l a rp r o b l e m st o al i g h t w e i g h tf r a m e w o r k d i f f e r e n tl i g h t w e i g h tf r a m e w o r k sa r ec h o s e no nd i f f e r e n tl a y e r s , w h i c ha r ec o m b i n e dt oaw e bw h o l ef r a m e w o r k ,t h e r e f o r eg r e a t l yi m p r o v i n gt h ee f f i c i e n c yo f d e v e l o p m e n t t o d a yas t r a i g h ts q le m b e d d e do rd a t aa c c e s sc l a s si sas o l u t i o nf o rt h em i s m a t c ho f t r a n s i e n to b je c t sa n dp e r s i s t e n to b je c t s o nt h ed a t a - p e r s i s t e dl a y e r , as e r i e so fs o l u t i o n s a p p e a ri no r d e rt os i m p l i f yt h ec o m p l e xa n dr e p e a t e do p e r a t i o n si nt h ed a t a - p e r s i s t e dp r o c e s s i ti si m p o r t a n tt oc h o o s eas o l u t i o nw h i c hi ss u i t a b l ef o rt h ep r o j e c td e v e l o p m e n ti nt h ea s p e c t o f f u n c t i o na n dp e r f o r m a n c e f i r s t ,am u l t i l a y e rd e s i g nc o n c e p to ft h ej 2 e ei si n t r o d u c e di nt h ep a p e r , a n dt h e no nt h i s b a s e ,t h eb a s i cc o m p o n e n ta n dp r i c n c i p l eo ft h em o s tp o p u l a rl i g h t w e i g h tf r a m e w o r k sf o r d i f f e r e n tl a y e ra r ee l a b o r a t e d s e c o n d ,t h ea d v a n t a g e sa n dd i s a d v a n t a g e so fd i f f e r e n ts o l u t i o n s o nt h ed a t a - p e r s i s t e dl a y e ra r ee m p h a t i c a l l ya n a l y z e d ,t h ep r o c e s so fd a t ap e r s i s t e n c ei s a b s t r a c t e di nd e t a i l ,a n dt h ec o m p l i c a t i o n st h a ti n f l u e n c et h ep e r f o r m a n c eo ft h ed a t a p e r s i s t e n c ea r es u m m a r i z e da c c o r d i n gt ot h ed e t a i l ,a n dt h eo p t i m i z a t i o nm e a s u r e sa r e c o n c l u d e dc o r r e s p o n d i n g l y o nt h es p e c i f i cd a t a b a s ep l a t f o r m ,p e r f o r m a n c et e s t so fp o p u l a r s o l u t i o n so fd a t ap e r s i s t e n c el a y e ra r ep r e c e d e dc o m b i n e dw i t ht h eo p t i m i z a t i o nm e a s u r e s , a n dt e s tr e s u l t sa r ea n a l y z e di nd e t a i la n dt h eb u s i n e s ss c e n ew h i c hd i f f e r e n tp o p u l a rs o l u t i o n s a d a p t e dt o ,a r ec o n c l u e d e d a i m i n ga tt h er e q u i r e m e n to ft h ed a t a p e r s i s t e dl a y e ro ft h e v s e a f 2 0f r a m e w o r k ,t h ed e s i g nc o n c e p to ft h es p r i n gd a oi sa n a l y z e d ,a n dc o m b i n i n gt h e r e s u l t so fp e r f o r m a n c et e s t s ,t h ei b a t i si sc h o s e na st h ep e r s i s t e n ts o l u t i o n f i n a l l y , f u n c t i o n i l l u m i n a t i o n ,p r o c e s s i n gf l o wa n d i n t e r f a c ei m p l e m e n t a t i o no fe a c hm o d u l ea r ee l a b o r a t e d a f t e rt h ec o m p l e t i o no fd e s i g n ,p e r f o r m a n c et e s to ft h ed a t ap e r s i s t e n c el a y e ri sd o n ea n dt h e r e s u l ts h o w e st h a tt h ed e s i g no ft h ed a t ap e r s i s t e n c el a y e ra c h i e v e st h ed e s i r e dp u r p o s e k e yw o r d :j 2 e e ,l i g h t w e i g h tf r a m e w o r k ,d a t ap e r s i s t a n c e ,v s e a f 2 0 ,i b a t i s 关于学位论文的独创性声明 本人郑重声明:所呈交的论文是本人在指导教师指导下独立进行研究工作所取得的 成果,论文中有关资料和数据是实事求是的。尽我所知,除文中已经加以标注和致谢外, 本论文不包含其他人已经发表或撰写的研究成果,也不包含本人或他人为获得中国石油 大学( 华东) 或其它教育机构的学位或学历证书而使用过的材料。与我一同工作的同志 对研究所做的任何贡献均已在论文中作出了明确的说明。 若有不实之处,本人愿意承担相关法律责任。 学位论文作者签名: 固臣 日期:年月 e t 学位论文使用授权书 本人完全同意中国石油大学( 华东) 有权使用本学位论文( 包括但不限于其印刷版 和电子版) ,使用方式包括但不限于:保留学位论文,按规定向国家有关部门( 机构) 送交学位论文,以学术交流为目的赠送和交换学位论文,允许学位论文被查阅、借阅和 复印,将学位论文的全部或部分内容编入有关数据库进行检索,采用影印、缩印或其他 复制手段保存学位论文。 保密学位论文在解密后的使用授权同上。 学位论文作者签名: j 墨l 陵 指导教师签名: 磐乏筮五豳! 乙 日期: 日期: 年月日 年月日 中国石油大学( 华东) 硕士学位论文 第一章绪论弟一早珀下匕 1 1 课题研究背景及意义 当前,实现企业级应用软件的平台主要有两种:j 2 e e 和n e t 。j 2 e e 提供了一组技 术规范和丰富的基础服务组件,开发者可以基于这些规范和服务组件,采用特定的开发 框架进行应用程序的开发。n e t 是m i c r o s o f t 公司整合自身已有平台和技术,推出的统一 平台。在此基础上,开发者可以选择v b n e t 、c 撑n e t 等不同的技术进行应用程序的开 发。由于j 2 e e 的开放性,有很多公司和开发者汇聚在一起推动着j 2 e e 技术的发展,开源 产品众多,使得j 2 e e 技术得到了迅速的发展【i 】。 j 2 e e 本身只是一种广泛意义上的企业解决方案,多层的j 2 e e 体系结构在提高软件重 用性和分解了问题复杂性的同时,也使得代码庞大,层与层之间的控制关系变得复杂。 j 2 e e 框架原本希望用j s p s e r v l e t e j b 的三层架构来分离显示业务数据三层逻辑,但实践 证明这种方案的层间的分离效果并未达到人们的预期目标。传统的j a v aw e b 应用程序采 用j s p 负责显示+ s e r v l e t 负责流程逻辑控锘1 + j a v a b e a n 负责数据封装的实现模式,这种模式 虽然体现了最基本的m v c ( m o d e l v i e w c o n t r o l l e r ) 分层,但是仍然存在一些问题:如 页面结构混乱、耦合紧密、程序复用度低等。 w e b 层的s t r u t s 框架就是在这个背景下出现的,它改进了页面结构混乱的问题。但是 s t r u t s 并不能胜任一切任务,因为s t r u t s 将所有的运算逻辑都放在a c t i o n 里,使得a c t i o n 类复用度低和逻辑混乱,如果一个类做了修改,那么依赖它的很多类都会受到牵连。 业务逻辑层的s p n n g 框架能够完全解耦类之间的依赖关系。在s p r i n g 中一个类需要 依赖的只是一个接口。只要有一个实现了这个接口的类,就可以通过x m l 配置文件把实 现类注入到调用接口的那个类里。通过配置文件的方式替代类之间的这种依赖关系,所 以s p f i n g 框架的核心就是所谓的依赖注入和控制反转。 数据持久层上,用j d b c 读写数据库时最常见的操作就是打开数据库连接、使用复 杂的s q l 语句进行读写以及关闭连接,获得的数据需要转换或封装后往外传,这是一个 非常繁琐的过程【2 】。为了简化这一过程出现了一系列的数据持久化解决方案,使我们的 软件开发能够真正面向对象,而不是面向混乱的代码。 综上所述,选取恰当的数据持久化解决方案,并结合s p r i n g 、s t r u t s 技术,可以组成 一个新的基于j 2 e e 的开发框架。采用这样的开发框架将可以使应用系统的设计和开发人 员从纷繁复杂的技术细节中解放出来,避免重复性的劳动,免除不必要的代码维护和升 第一章绪论 级,集中精力了解用户需求,搞好业务系统的设计和开发,具有良好的可行性及现实意 义。 1 2 研究现状 尽管j 2 e e 平台承诺,开发j a v a j 2 e e 应用简洁、高效,但实际情况并非如此。因为开 发进度往往难于控制、开发效率低,而且很多开发者并没有真正用好j 2 e e 组件技术。比 如,j 2 e e 开发者常常遇到的一个问题就是如何组装不同的组件元素( 例如:w e b 控制器 题写结构和数据库接口是由不同的团队开发的,彼此几乎一无所知,应该如何让它们配 合工作? 很多框架尝试过解决这个问题,结果都不尽如入意,然而在一些相关的设计 模式( 如反转控制、依赖注入) 出现以后,集成了这些模式的框架提供了更通用的 组 装各层组件”的方案,这样的框架通常被成为 轻量级框架 【3 1 。 反转控$ o i o c ( i n v e r s i o no f c o n t r 0 1 ) 是一种新兴的轻量级软件设计理论,它为软件 系统的组件解耦和代码复用起到了重要作用,i o c 重点关注组件的依赖性、配置以及生 命周期,其目的就是将来自不同项目的组件组装成为一个高度内聚的系统【4 】。框架在抽 象和集成了i o c 后,解决了上述之类的问题,由此可见以i o c 为基础的轻量级框架是当前 框架的发展方向。 目前轻量级框架的发展非常繁荣,针对表示层、业务层、持久层及整个应用程序, j a v a 社区都有相应的多种框架解决方案。其中,比较有名有: 在w r e b 层面,主要有采用m v c 体系结构的s t r t u t s 、w r e b w b r k 2 、j s f 和t a p e s t r y t 5 | 。 在业务逻辑层,常见的主要有s p r i n g 、a v a l o n 、j d o n f r a m e w o r k 。 这些框架联合起来的作用,相当于在j 2 e e 体系结构中的e j b 组件发挥的作用,为大 多数的项目开发提供了便利。 通过直接内嵌s q l 或者数据访问类的方法可以解决面向对象技术和关系数据库不 匹配的问题 6 1 。前者是通过直接在类的源代码中嵌入s q l 语句来实现对象到关系数据库 的映射和存储,这种方法比较简单,易于实现。但是它造成了应用程序和数据库结构的 直接耦合,违反了软件工程的原贝j jr n 。后者是把所有的s q l 语句封装起来,封装在一个 或多个”数据处理类”中,较之第一种方法有所改进,仍然没有完全消除应用程序和关系 数据库的耦合。一个更好的解决方案是在应用程序的业务逻辑层和数据层之间构建一个 持久层,由持久层来提供对象关系映射服务,封装数据访问细节。采用持久层的方 法可以从根本上消除应用程序和关系数据库的耦合,使得数据访问对应用程序的源代码 2 中国石油大学( 华东) 硕: :学位论文 是透明的,如果数据库的库表结构发生改动,只需要对持久层的配置文件做适当修改, 不会对应用程序造成影响。 持久层能够在对象关系数据库之间提供一个成功的企业级映射解决方案,弥补 面向对象技术和关系数据理论这两者之间的差异。采用持久层的方法可以从根本上消除 应用程序和关系数据库的耦合,目前使用最广泛的三种持久化模式分别是:c m p 模式、 j d o 模式以及o r m 模式: 1 、c m p 模式 c m p ( c o n t a i n e r - m a n a g e dp e r s i s t e n c e ) 是由e j b 容器管理持久化。b e a n 容器封装了 对象与关系的映射及数据访问细节,提供大部分的数据完整性、资源管理和并发性功能, 从而使开发人员关注业务逻辑和数据处理,而不是这些低级细节。使用c m p 时,由容器 生成持久性代码并管理持久性逻辑。 2 、j d o 模式 j d o ( j a v ad a t ao b j e c t s ) 是s u n 公司制定的存储j a v a j 币 象的规范。规范的两个主要 目的是提供数据处理和访问机制的a p i ,以及允许规范的实现作为应用服务器的一部分。 j d o 提供了面向对象的持久数据存储【8 1 。开发人员使用p o j o 来装入和存储持久数据。 3 、o r m 模式 o r m ( o b j e c t - r e l a t i o nm a p p i n g ) 是将应用程序中需要持久化的对象转换成数据库 支持的关系模式数据。虽然对象模型的数据和关系模型的数据之间存在模式不匹配,但 是关系模型中丰富的谓词逻辑可以很好的描述对象的状态和对象与对象之间的关系。可 以利用关系模式中的元组和谓词共同完成对对象模式数据的存储,并且在应用程序需要 的时候将其完全复原9 1 。 o r m 具有自我存储到关系数据库的能力,能够直接存储对象的改变,而不考虑数据 库存取代码。这样,把全部精力集中到对对象进行编程,解决业务问题。在整个系统中 除了这一个层次,没有其他数据库存取代码。o r m 中间件能在任何一个j a v a 应用的业务 逻辑层和数据库层之间充当桥梁。 目前,持久层的研究和应用已经越来越受到国外学界和业界的重视:2 0 0 4 年7 月, e j b 专家委员会公布了新的e j b 3 0 规范草本,e j b 3 0 最重要的变更是:使用了基于 h i b e r n a t e 的o r m 映射模型和j a v a 5 中的程序注释工具。2 0 0 5 年1 1 月,b e a 收购s o l a r m e t r i c ,从而将k o d o 纳入他们的产品线。k o d o 是一款强壮的、高性能的、功能丰富的j d o 规范的实现,以前只支持j d o 标准,2 0 0 6 年2 月1 3 日,b e a 公司宣布发布k o d o 项目的最 第一章绪论 新版本k o d o4 0 0e a r l ya c c e s s4 ,k o d o4 0 0e a 4 支持e j b 3 和j d 0 2 两个标准。此外, o p e nj p a 将会实现支持e j b 3 0s p e c i f i c a t i o n 的持久层架构。2 0 0 6 年3 月,j d 0 2 0 - - j s r 2 4 3 通过最终投票。尽管从j d 0 2 0 从一开始制定,就存在很多的争论,c r a i gr u s s e l l 还是一 直努力在制定一个人性化,易于编写,完全标准的j d 0 2 0 ,新的标准的制定基于j d 0 1 0 应用4 年来所有用户的经验积累。随着e j b 3 0 持久层的出现,j d 0 2 0 的前景令人期待1 0 】。 1 3 课题来源 课题来源于作者实习单位胜利软件公司技术研发中心项目- v s e a 也0 框架。 v s e a f 2 0 是基于j 2 e e 平台的分布式组件技术架构,适应企业级应用开发,并且可以广泛 应用于w e b 开发领域。业务层采用s p d n g 应用开发框架为基础实现,实现容器的分层管 理,清晰地划分业务领域,明确不同业务的管辖,以有效地组织中间层对象,紧密地联 系业务容器和各引擎的关系,更好地利用核心服务的功能。 作者承担了v s e a f 2 0 框架数据持久层的设计与实现。通过查阅文献,分析s p r i n g 框架 源码中关于数据持久操作的原理,项目组结合内部主要的业务需求以及现有项目的数据 持久化方式,并对现有主流的数据持久化解决方案在具体的数据库平台上进行了相关的 性能测试,决定采用基于i b a t i s 模型的数据访问方式,迸一步进行功能性封装,提高易 用性,可管理性,通过数据模型实现对应用系统数据库的管理。 1 4 论文的组织结构 全文共分六章: 第一章:绪论。阐述课题研究的背景及意义、研究现状、课题来源以及文章的组织 结构。 第二章:j 2 e e 轻量级框架。介绍t j 2 e e 分层设计思想,以s t r u t s 和s p r i n g 为重点介绍 了表现层和业务逻辑层等不同层次上优秀的j 2 e e 的轻量级框架的基本构成和实现原理。 第三章:数据持久层的解决方案及性能比较。阐述了各种数据持久层不同的解决方 案,重点论述了它们的实现原理及优缺点,最后从性能的角度,针对主要业务类型进行 了性能测试,对后期的v s e a f 2 0 数据持久层设计与实现提供依据。 第四章:v s e a f 2 0 框架的数据持久层设计。简述v s e a f 2 0 框架的设计目标及体系结构。 v s e a f 2 0 框架数据持久层的具体实现是根据常见业务需求及人力资源状况,结合第三章 中进行的性能测试,最终选择i b a t i s 作为持久层解决方案。 第五章:v s e a f 2 0 框架数据持久层具体实现。主要论述了v s e a f 2 0 框架数据持久层的 4 中国石油大学( 华东) 硕上学位论文 具体实现过程。分模块简述了各种配置工具及数据访问类设计的具体过程,重点介绍了 各个模块中的功能要点、处理流程及接口实现。对实现完成的数据持久层框架进行性能 测试,分析是否满足设计要求。 第六章:总结论文的主要研究内容并分析了进一步的工作。 第二章基于j 2 e e 流行轻量级框架 第二章基于j 2 e e 流行轻量级框架 j 2 e e 是一种利用j a v a 平台来简化企业解决方案的开发、部属和管理相关的复杂问题 的体系结构。j 2 e e 技术的基础就是j a v a 2 平台的标准版。j 2 e e 不仅保留了标准版中的许 多优点,同时还提供了对e j b 、j a v as e r v l e t s 、j s p 、j d b c 以及x m l 技术的全面支持。j 2 e e 已成为开发企业应用和提供计算解决方案的事实标准。 2 1j 2 e e 的分层设计思想 s u n 设计j 2 e e 的目的是为了解决两层( c l i e n t s e r v e r ) 的缺陷。传统的两层模式,客 户端由于承担了过多的责任而显得过于庞大,我们把它称为胖客户端。这种模式初次部 署简单,但升级维护费用较高。j 2 e e 把两层结构变成多层,每一层为客户提供特定的服 务。 j 2 e e 的经典结构可划分成4 层【l l 】: 1 、运行在客户端的客户层组件。 2 、运行在j 2 e e ) 艮务器上的w e b 层组件。 3 、运行在j 2 e e ) 艮务器上的业务逻辑层组件。 4 、运行在企业端服务器上的企业信息系统软件。 其结构图如图2 1 所示。 客户层 巨困 一 至叵邯层 区圃 图2 1j 2 e e 的四层体系结构 f i g2 - 1 j 2 e ef o u rl a y e r sa r c h i t e c t u r e 客户层:用来与用户交互;并把来自系统的信息显示给用户。j 2 e e 客户端可以是 w 曲浏览器也可以是桌面应用客户程序。 w e b 层:产生表示逻辑,并接受来自客户端的用户反馈。w e b 层通常在w r e b 服务器 中实现。 6 中国石油大学( 华东) 硕上学位论文 业务逻辑层:处理应用的核心业务逻辑。它从w e b 层收到请求,根据请求处理响应 的业务逻辑。 企业信息系统层( e i s 层) :包括企业基础建设系统例如企业资源计划( e i 冲) 、大 型机事务处理、数据库系统和其它的遗留信息系统。 从图2 1 可以看出,j 2 e e 架构也可以被划分为三层。即从系统的物理层次来考虑, 可以分为客户端机器、j 2 e e j 艮务器和数据库系统服务器。 但是,这种体系结构仍然没有解决所有的问题。业务逻辑层不仅负责业务逻辑,还 直接访问数据库,实现对业务数据的保存、更新、删除、查询等操作。因此业务逻辑代 码和数据操作代码混在一起,当数据库平台或数据源发生改变时,修改起来相当麻烦。 为了将数据访问细节和业务逻辑分开,可以把数据访问作为单独的数据持久层分离 出来,形成一个五层的体系结构,如图2 2 所示。 图2 - 2j 2 e e 的五层体系结构 f i g2 - 2j 2 e ef i v el a y e r sa r c h i t e c t u r e 所有与数据源相关的操作,如增加、删除、修改、查询以及数据管理、数据库连接 池管理、并发性控制、异常处理等都放在数据持久层里。 , 数据持久层的引入有如下优点: 1 、数据持久逻辑和业务逻辑分离,业务逻辑层通过数据持久层与数据库交互,而 不是在业务代码中夹杂大量访问数据源的代码。各层功能简洁专一。 2 、对业务逻辑层隐藏了数据库平台。将所有数据连接逻辑封装到数据持久层中, 业务逻辑开发人员不需要知道数据库平台的类型以及连接数据库时所需的任何安全信 7 第二章基于j 2 e e 流行轻量级框架 息( 用户i d 与口令) 。 3 、数据库中存储着数据的物理细节以及实体间的关系,这些数据和关系被高度抽 象,使得应用程序不必直接对数据库发出s q l 查询,不必知道数据的物理结构,而只需 使用数据对象就可以访问数据库。 4 、简化了系统的开发过程。由于隐藏了打开数据库连接、发出数据读取或操作的 命令以及事物管理的细节等操作,所以使得系统开发过程得到了简化。 2 2 不同层次上优秀的轻量级框架 2 2 1 轻量级j 2 e e 架构 基于传统的j 2 e e 架构的种种问题,许多专家和开源组织试图开发出一些轻量级的、 灵活的j 2 e e 框架,来替代传统的基于e j b 的架构。 “轻量级 通常指的是框架本身,不是说它们只能适用于轻量级的应用开发。轻量 级框架的轻盈体现在其框架本身的基础结构以及对其他应用工具的支持和装配能力上。 一般而言, 轻量级 具备两个方面的含义:一是框架的核心是轻量的,体积小,是一 种微内核机构,具有简化的编程模型,旨在消除与传统j 2 e ea p i 有关的不必要的复杂性 和限制。另外一方面,轻量级框架不会强迫业务对象遵循特定平台专有的接口,允许在 普通j a v a 对象中实现业务逻辑,这意味着它具有松耦合其他工具或组件的能力。 “轻量级j 2 e e 架构是针对经典的基于e j b 的j 2 e e 架构而言的,轻量级j 2 e e 架构仍 然采用j 2 e e 规范的分层结构思想,它没有提出任何新规范,“没有重复发明轮子1 2 1 ,只 是针对j 2 e e 分层结构汇总每一层,用一个轻量级框架来实现,最后组成一个更加轻盈的 j 2 e e 架构。e j b 的内聚性较强,比如数据持久层管理、事务管理、生命周期管理都全部 交给7 e j b 容器中管理,强内聚要求必须放弃一部分可控性而去信任容器能力【1 3 】。轻量 级j 2 e e 架构则不考虑完整的j 2 e e 整个服务层次,而是对各个常用的服务进行轻量的封 装,它的一个最重要的目标,就是解耦合,使得企业级的开发就像组装机器,轻盈简便。 简而言之,轻量级j 2 e e 架构就是由与j 2 e e 分层结构中的各层相对应的轻量级架构的 松耦合。 2 2 2w e b 层轻量级框架 w e b 层框架要解决的是应用系统中与用户交互的部分。在这一层次,m v c 模式已经 被广泛的接受和采用,对该模式实现方式的不同就形成了不同的w e b 层框架,其中比较 成熟的有s t r u t s 、w e b w 6 r k 、t a p e s t r y 和j s f 等。 8 中国石油大学( 华东) 硕士学位论文 s t r u t s 是由a p a c h es o f t w a r ef o u n d a t i o n 发起的开源项目,它在j a v a 服务器端实现了 m v c 设计模式。它主要是采用s e r v l e t 和j s p 技术来实现,把s e r v l e t 、j s p 、自定义标签和 信息资源整合到一个统一的框架中,同时它还提供了一套完整的标签库供设计w e b 界面 时使用,能极大的节省w - e b 开发时间【1 4 1 。 w e b w o r k 2 是有o p e n s y m p h o n y 组织开发的,致力于组件化和代码重用的m v c 模式的 j 2 e ew e b 框架。它提供t v e l o c i t y 模板机制,o g n l 表达式语言以及灵活的验证框架使得 它具备优秀的w r e b 处理能力。 j s f ( j a v a s e r v e rf a c e s ) 是由j c p ( j a v ac o m m u n i t yp r o c e s s ) 开发的一种j a v a 标准, 最大优势是其采用的组件模型和事件驱动。作为一种高度组件化的技术,开发人员可以 在一些开发工具的支持之下,实现拖拉式编辑操作,用户只需要简单的将j s f 组件拖到 页面上,就可以很容易的进行w e b 开发。 下面重点介绍s t r u t s 的实现原理和基本构成: 一、s t r u t s 的体系结构 作为一个m v c 的框架,s t r u t s 对m o d e l 、v i e w 和c o n t r o l l e r 都提供了对应的实现组件, 对应图2 3 ,分别进行介绍,并看看它们是如何结合在一起的。 r e s p o n s e 图2 - 3s t r u t s 体系结构 f i g2 - 3s t r u t sa r c h i t e c t u r e 二、s t r u t s 的核心组件 s t r u s t 的核心组件包括【1 5 】:a c t i o n s e r v l e t 、a c t i o n m a p p i n g 、a c t i o nb e a n 、a c t i o n f r o m b e a n 、s t r u t s 标记库。 第二章基于j 2 e e 流行轻量级框架 l 、a c t i o n s e r v l e t 控制器组件是t 扫o r g a p a c h e s t r u t s a c t i o n a c t i o n s e r v l e t 类实现的,这个类是 j a v a x s e r v l e t h t t p h t t p s e r v l e t 类的扩展,它是这一框架的核心。我们可以把它看作是s t r u t s 结构的w e b 应用的调度程序,调度的依据i 扫a c t i o n m a p p i n g 对象提供。它的基本功能是截 获用户的h t t p 请求,并将用户请求封装至i j a c t i o n f o r m 中进行数据校验,校验成功后,将 用户数据a c t i o n f o r m 传送到相应的a c t i o n 中进行业务逻辑处理,并根据结果返回一个 a c t i o n f o r w o r d 对象,此对象连接到相应的j s p 页面。 2 、a c t i o n m a p p i n g a c t i o n m a p p i n g 对象,顾名思义就是a c t i o n 映射对象,它帮助控制器进行框架内部的 流程控制。a c t i o n s e r v l e t 是控制器任务的具体实现者,a c t i o n m a p p i n g 贝j j 为a c t i o n s e r v l e t 指明了具体执行路线,是s t r u t s 体系结构的具体体现者。s t r u s t - c o n f i g x m l 是一组响应用户 请求的a c t i o n m a p p i n g 对象集合,每个用户请求都有一个a c t i o n m a p p i n g 对象与之相对应。 它需要应用开发者配置与用户请求相对应的a c t i o n f o r m 数据属性、是否需要进行数据校 验和回写、a c t i o n 数据处理、输入页面、以及处理完后可能跳转的页面等一组属性信息, 这组属性信息构成了一个a c t i o n m a p p i n g 对象,它决定了该项请求的处理过程。 3 、a c t i o n f o r m a c t i o n f o r m 类是o r g a p a c h e s t r u t s a c t i o n a c t i o n f o r m 扩展类,程序开发人员为每个表 单都创建一个a c t i o n f o r mb e a n ,以维护w e b 应用程序的会话状态,但一个a c t i o n f o r m 可以对应多个表单,具有很好的重用性。它要求为表单中出现的每个字段定义一个属性, 是视图与模型进行数据交换的桥梁。使用它的目的是为了存储用户在相关表单中输入的 数据,在数据校验通过后,由控制器传送给相应的a c t i o n 进行业务逻辑操作,同时在数 据验证失败后,将同一网页进行再行,并提供一组错误信息,这样就可以让用户只修改 错误的录入数据。 4 、a c t i o n 所有a c t i o n 类都是o r g a p a c h e s t r u t s a c t i o n a c t i o n 扩展类,是业务逻辑的一个包装,是 s t r u t s 应用程序开发的核心。a c t i o n 类的用途是接受控制器传送的a c t i o n f o r m 类用户请求 数据,根据请求数据处理业务逻辑,并根据处理结果指明应用的流向,a c t i o n 类应控制 应用程序的流程,而不是控制应用程序的业务逻辑。通常将业务逻辑放在j a v a b e a n 或e j b 中处理,这样就可以为我们的w e b 应用提供更大的灵活性和可重用性。 5 、s t r u t s 标记库 l o 中国石油大学( 华东) 硕上学位论文 j s p 视图组件所使用的s t r u t s 标记库由四类标记组成,他们分别是: b e a n 标记:用来在j s p 页面中管理b e a n 。 逻辑标记:用来管理根据条件生成的输出文本和其它一些用来控制显示的信息。 h t m l 标记:用来生成动态h t m l 用户界面和窗体。 模板标记:使用动态模板构造通过格式的页面模板,实现页面的继承性和可重用性。 s t r u t s 标记库功能强大,内容非常丰富,在此不再赘述,充分使用这些标记,能最 大限度地发挥s t r u t s 的作用。 6 、s t r u t s 与m v c 的关系 s t r u t s 实质上就是在j s pm o d e l 2 的基础上实现的一个m v c 框架。我们可以从m v c 的 角度来看看s t r u t s 的体系结构和工作原理: 控制器:控制器i 扫a c t i o n s e r v l e t 和a c t i o n m a p p i n g 对象构成,其作用是从客户端接受 请求,并且选择相应的业务逻辑,然后把响应结果送回到客户端。s t r u t s c o n f i g x m l 是一 个a c t i o n m a p p i n g 配置文件,每个a c t i o n m a p p i n g 对象实现一个请求到一个具体的m o d e l 部分中a c t i o n 处理器对象之间的映射。当客户端请求到达控制器后就会在这个配置文件 中找到相应的控制逻辑。控制逻辑由a c t i o n s e r v l e t 来承担,a c t i o n s e r v l e t 是一个通过的控 制组件,它处理所有发送s t r u t s 的h t t p 请求,并截取和分发这些请求到相应的a c t i o n ( 通 常称之为a c t i o n b e a n ) ,此外还负责用相应的请求参数填写a c t i o n f o r m ( 通常称之为 f o r m b e a n ) 。 视图:主要由j s p 生成页面完成相应的功能。s t r u t s 提供了非常丰富的j s p 标签库, 通过这些标签可以简化创建用户界面的过程,易于完成与m o d e l 部分的a c t i o n f o r m 映射 以及用户数据的封装,从而实现表现逻辑和业务逻辑的分离,大大提高开发效率。 模型:模型以一个或多个j a v a b e a n 的形式存在。这些b e a n 分为三类:a c t i o n f o r m 、 a c t i o n 、j a v a b e a n 或e j b 。a c t i o n 对象封装了具体的处理逻辑,调用业务逻辑模块,并将 结果提交到适合的视图组件以产生响应。a c t i o n f o r m 对象通过定义属性对客户端表单数 据进行描述,它结合自定义标签库实现表单数据的良好封装和支持,从而a c t i o n 对象可 以直接对它进行读写,不再需要和r e q u e s t 、r e s p o n s e 对象进行数据交互。显而易见, a c t i o n f o r m 对象实现了对视图和模型之间交互的良好支持。 , 2 2 3 业务层轻量级框架 业务层框架也常常称为容器类框架,它对诸如j d b c 、j n d i 、j a v a m a i l 、j t a 或者其 第二章基于j 2 e e 流行轻量级框架 它标准的j 2 e e 服务提供支持,而这些功能,在经典的j 2 e e 架构中,是由特定的容器提供 的。目前较为成熟的此类框架有开源项目s p r i n g 和j d o nf r a m e w o r k 。 s 研n g 是一个解决了许多在j 2 e e 开发中常见的问题的强大框架【1 6 1 。它提供了管理业 务对象的一致方法和提倡面向接口编程而不是面向类编程的优秀思想;其框架的基础是 使用j a v a b e a n 属性的i o c 容器;s 皿n g 还提供一个用标准j a v a , s - 言编写的a o p 框架,它给 p o j o 提供了声明式的事务管理和其它的企业事务管理策略,这个框架足够强大,使得 应用程序能够抛开e j b 的复杂性,同时享受着和传统e j b 类似的关键服务;同时,借助 其丰富的j 2 e e 服务抽象( t e m p l a t e :模板

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论