(计算机应用技术专业论文)基于java的主流web开发框架的研究与整合.pdf_第1页
(计算机应用技术专业论文)基于java的主流web开发框架的研究与整合.pdf_第2页
(计算机应用技术专业论文)基于java的主流web开发框架的研究与整合.pdf_第3页
(计算机应用技术专业论文)基于java的主流web开发框架的研究与整合.pdf_第4页
(计算机应用技术专业论文)基于java的主流web开发框架的研究与整合.pdf_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

摘要 i i _il -i_ 摘要 时代在发展,社会在进步,企业信息化的步伐也在与时俱进。无论规模大小, 企业都需要量身定制专门的信息管理系统,提高事务处理的自动化程度,降低企 业数据管理的工作量,从而达到减少企业运营的丌销,提高部门同常工作效率的 目的。j 2 e e 作为可移植的企业计算平台,为信息管理系统的丌发者提供了一套 庞大而完备的基础设施,在一定程度上简化了企业应川的丌发,得到了业界的认 可和广泛的应用。但随着人们开发经验的积累,发现j 2 e e 在许多方面的表现总 是不尽如人意,突出体现在开发周期长、开发成本高以及性能低下。于是经验丰 富的开发者开始研究开发针对特定一类问题的解决方案,业内称之为“框架”。 时过境迁,一批基于j a v a 的w e b 开发框架陆续出现,它们中间免不了会有功能 重合的情况,面对各种各样的提供类似功能的框架,开发者如果不进行前期调研 便难以做出合理的取舍。针对这个问题,本文对目前比较流行、应用比较广泛的 基于j a v a 的w 曲开发框架进行了研究,这些框架包括s t r u t s 、s p r i n gm v c 、s p r i n g 、 h i b e r n a t e 、i b a t i ss q lm a p s 和s p r i n gj d b c ,它们之中有网络层框架,也有持久 层框架,文中从纵向上分析了各个框架的技术特点以及功能特性,详细阐述了各 个框架的个体特性,从而使读者对本文研究的目标框架有一个基本的了解。在此 基础上,笔者从横向上对比了网络层和持久层框架的优缺点,剖析了框架之间的 共性,同时也说明了各个框架的个性,并指出了目标框架适用的领域,在框架的 选择问题上向开发者提供了参考意见。基于文中提出的框架选择标准,笔者将几 个框架应用在农资网电子商务平台系统中,通过引入目标框架实现该系统原型, 在一个实际的系统原型中向读者展示了使用目标框架所要求的编程方式,以及框 架对开发者施加的约束和使用框架带来的好处。农资网系统通过引入框架,达到 了代码量少和复杂度低的目标。在详细阐述了各层的实现方式的基础上,本文提 出了关于将功能互补的框架进行整合的可能性、可行性和实用性的结论。 关键词j 2 e e ;框架;整合;框架选择 a b s t r a c t a b s t r a c t w i t ht i m e s f l y i n g a n ds o c i e t y m o v i n gf o r w a r d ,e n t e r p r i s e i n f o r m a t i o n m a n a g e m e n tm a k e sp r o g r e s s i no r d e rt oa u t o m a t et h ep r o c e s so fb u s i n e s s ,r e d u c et h e w o r k l o a do fe n t e r p r i s e s d a t am a n a g e m e n t ,d e c r e a s et h ec o s to fe n t e r p r i s eo p e r a t i o n s , a n dm a k et h ed a i l yw o r ke f f i c i e n t ,t h ee n t e r p r i s e s ,r e g a r d l e s so ft h ec e r t a i ns c a l e ,n e e d e s p e c i a l l yc u s t o m i z e dm a n a g e m e n ti n f o r m a t i o ns y s t e m s a sap o r t a b l ee n t e r p r i s e c o m p u t i n gp l a t f o r m ,j 2 e ep r o v i d et h em i sd e v e l o p e r sw i t has u i t eo fi n f r a s t r u c t u r e , w h i c hs i m p l i f i e st h ed e v e l o p m e n to fe n t e r p r i s ea p p l i c a t i o n st os o m ee x t e n t ,s ot h a tt h e j 2 e ep l a t f o r mi sa d o p t e db yt h ei n d u s t r ya n da p p l i e dw i d e l y w i t ht h ed e v e l o p m e n t e x p e r i e n c e si n c r e a s i n g ,h o w e v e r , p e o p l er e a l i z et h ej 2 e ep l a t f o r mi sn o ta se x c e l l e n t a sw ee x p e c ta n di tu s u a l l yg i v e sr i s et ol o n gd e v e l o p m e n t c y c l e ,h i g hc o s ta n dp o o r p e r f o r m a n c e t h e r e f o r e ,e x p e r i e n c e dd e v e l o p e r sb e g i nt ot r yt oc r e a t eas o l u t i o n , w h i c hi sc a l l e d ”f r a m e w o r k ”,t oas p e c i f i cs o r to fp r o b l e m s t i m ep a s s e sa n das e to f j a v a - b a s e df r a m e w o r k sf o rw e bd e v e l o p m e n te m e r g e i ti sd i f f i c u l tf o rt h e mt oa v o i d t h ec a s eo ff u n c t i o n so v e r l a p p i n g f a c i n gv a r i o u sf r a m e w o r k sw h i c hp r o v i d es i m i l a r f u n c t i o n s ,d e v e l o p e r sc o n f u s ea n dc a nh a r d l ym a k er e a s o n a b l ec h o i c ei ft h e yd on o t h a v es o m es t u d y i n gw o r kd o n ei na d v a n c e t os o l v et h i sp r o b l e m ,t h i st h e s i ss t u d i e s s e v e r a lp o p u l a ra n dw i d e l ya p p l i e dj a v a b a s e df r a m e w o r k sf o rw e bd e v e l o p m e n t t a r g e tf r a m e w o r k si n c l u d es t r u t s ,s p r i n gm v c ,s p r i n g ,h i b e r n a t e ,i b a t i ss q lm a p s a n ds p r i n gj d b c ,a m o n gw h i c ht h e r ea r ef r a m e w o r k si ne i t h e rp r e s e n t a t i o nt i e ra n d p e r s i s t e n c et i e r t h et h e s i sa n a l y z e st h et e c h n o l o g i e sa n df e a t u r e si n v o l v e di ne a c h f r a m e w o r k ,a n di ti l l u s t r a t e st h e i rp e r s o n a l i t ys oa st om a k es u r et h er e a d e r sa r ea b l e t ob ef a m i l i a rw i t he v e r yt a r g e tf r a m e w o r k b a s e do nt h ek n o w l e d g ea b o v e ,t h i st h e s i s a d d r e s s e st h ec o n sa n dp r o sf o re a c hf r a m e w o r k ,a n a l y z e st h e i rc o n l n l o n n e s sa n d p e r s o n a l i t y , p o i n t so u tt h ea p p l i c a b l ec a s e so fe v e r yt a r g e tf r a m e w o r ka n do f f e r s d e v e l o p e r s ar e f e r e n c es o l u t i o nt of r a m e w o r kc h o i c e i s s u e a c c o r d i n gt o t h e f r a m e w o r ks e l e c t i o nc r i t e r i a ,w ea p p l yaf e wf r a m e w o r k st oa ne - b u s i n e s sa p p l i c a t i o n w h i c hi sk n o w na sn o n gz i w i t ht h e s ef r a m e w o r k s ,w ea r ea b l et oi m p l e m e n tt h e n o n gz is y s t e mm o d e la n dm e a n w h i l ep r e s e n tt h ep r o g r a m m i n gs t y l ew es h o u l d f o l l o w , t h er u l e sw es h o u l dc o m p l ya n dt h eb e n e f i t sw eg e tw h i l ew o r k i n gw i t ht h e s e f r a m e w o r k s t h r o u g hi n t r o d u c i n gf r a m e w o r k st on o n gz is y s t e m ,w ea c h i e v et h ea i m t h a tt h ec o d es i z ei sm a n a g e da n dt h ec o m p l e x i t yo fs y s t e mi sl o w a f t e rd e t a i l i n gt h e i m p l e m e n t a t i o no fe a c hs y s t e mt i e r , t h et h e s i sd r a w sac o n c l u s i o no nt h ep o s s i b i l i t y , f e a s i b i l i t ya n dp r a c t i c a b i l i t yo ff u n c t i o n c o m p l e m e n t a r yf r a m e w o r k si n t e g r a t i o n i i i 北京t 业大学t 学硕。l :学能论文 k e y w o r d sj 2 e e ;f r a m e w o r k ;i n t e g r a t i o n ;f r a m e w o r ks e l e c t i o n 1 v 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他 人已经发表或撰写过的研究成果,也不包含为获得北京工业大学或其它教育机构 的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均 已在论文中作了明确的说明并表示了谢意。 签名:熬叁脚巡:盈 关于论文使用授权的说明 本人完全了解北京工业大学有关保留、使用学位论文的规定,即:学校有权 保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部 分内容,可以采用影印、缩印或其他复制手段保存论文。 ( 保密的论文在解密后应遵守此规定) 签名: 苏羲 导师签名: 日期:望蕉:墨7 第l 章续论 第1 章绪论 1 1 课题背景 开放源代码运动在9 0 年代开始日益发展,网前已经成为软件业内不可低估 髓一般势力,比较著名的有l i n u x 、a p a c h e 、t o m c a t 、m y s q l 等。现在,开放 源码的潮流已经超出了操作系统、数据库管理系统和w e b 服务器等系统_ :j l :发领 域,在企业应用开发中寻找新的领地。企业应用是指服务于商业目的,处理企业 业务倍息、数据的软件系统。虽然随着网络热潮逐渐冷却,企业开始谨慎考虑自 已在应用系统开发方露的投入,但是毕竟企业的业务流程需要专f j 的信息系统处 理,从而提高自动化程度、减少中间环节、加快信息处理速度。因此,目前国内 的企业应用项目开发还是日益火爆,尤其在电子政务、客户关系管理、供应链管 理等领域委是如此。 随着开放源码项目发展日益壮大,出现了很多有蓿广阔用户群体的项目与产 品,它们在企业应用开发中正在发挥着越来越大的作用,并且已经有许多在企业 应用开发领域中基于开放源码项目的报优秀的解决方案。这些出色的解决方案为 我们引入了一个新名词框架。框架是出一些特殊组件构成的一个开发平台, 这些已经被实现并且被验证过的组件为开发者提供了个可重用的设计,使得开 发者基于这些已存在的基础设施可以在较短的时间里开发出功能较完善的应用 程序l l 】。所以,框架本质上是大多数顼露中普遍存在的一类问题的解决方案,透 过在项目中引入框架所包含组件将有助于降低开发者和测试人员的工作量,降低 应用的复杂度。例如,在基于j a v a 的w e b 开发领域里,一个个开源框架如雨后 春笋般地涌现出来s t r u t s 、s p r i n g 、h i b e r n a t e 等等,数量之多,难以枚举。 它们的共同点是,完全或部分开放源代码,由第三方组织开发。不同点是,它们 有的专注于w e b 层,有的侧重于业务层,还有的则擅长于持久层。由此,基于 j a v a 的w e b 开发领域进入了百家争鸣、百花齐放的时代。在这空前的繁荣之下, 基于w e b 的企业应用开发者们鲍脚下似乎是一马平矧,再也没有障碍了。 不过,人们对于完美的追求从来就没有停止过。虽然拥有了如此之多的开发 框架,但j 2 e e 开发者们的开发效率却并没有提高多少,或者说他们开发效率的 提高与框架的丰富与繁荣的程度不成比例。经过反思,我们发现虽然框粲越来越 丰富,可供选择的替代者越来越多,但开发者们却感觉好像陷入了技术的漩涡。 开发者们往往会在选择框架时犹豫不决,这种在框架选择上的困惑不是个别现 象,因为为了做出理智的判断,开发者一般都要囱己亲自摸索从而做出决定,但 针对多种挺架的研究性工作菲常耗时,这往往又是项鼷工期所不允许的。因此应 该事先做好框架的调研工作,了解目前主流框架的基本特性,从而能够在框架的 选择问题上把握正确的方向,切实地提高j 2 e e 应用程序的开发效率。 北京t 业大学t 学硕_ j j 学位论文 1 2 研究现状分析 国外开放源码项目的集中地有a p a c h e 组织以及s o u r c e f o r g e 网站,其中, a p a c h e 作为一个第三方组织为大家奉献了久负盛名的a p a c h e 、t o m c a t 、s t r u t s 、 a x i s ;而s o u r c e f o r g e 网站则是最著名的开源项目中心,它是世界上最大的开源代 码和程序库,目前有超过16 0 0 0 0 个项目。同时,国内自9 0 年代末开始也有很多 人投入到开源项目的开发,开源项目比较集中的地方是“共创软件联盟 网站, 他们除了提供各种c a s e 工具以外,还有一些项目是专注于特定领域的解决方案 开发,如客户关系管理等。 当前,国内外的开发团体对几种主流的框架的总体评价还是很高的。这一点 从开源框架的使用情况就可见一斑。据b e a 的调查,全球排名前2 0 0 0 家软件开 发公司中有7 0 以上在使用一种或多种开源框架,人们对开源框架给予了极大 的关注和重视,对各种开源框架的研究与讨论也在如火如荼地进行着。不过,迄 今为止几种主流的、广受好评的w e b 丌源框架无一不是由国外的软件公司或第 三方组织开发出来的,国内开发的框架影响力不够。其原因是在国外开源早就有 一定的基础,并已经形成了一种文化,而且有愈演愈烈的趋势,例如,s u n 宣布 将其旗舰产品s o l a r i s 开源;i b m 向第三方商丌放了其高性能通用并行文 件系统( g p f s ) 的源代码,等等。因此,国外的软件机构对开源框架的开发、 研究和评估都走在了我们前面,在这方面我们与国外的同行还有一定的差距。不 过近几年,国内的软件公司对歼源框架逐渐重视起来,也投入了相当的人力和资 源,去研究一些流行的开源框架,取得了不小的成果。 1 3 研究目的及意义 对当前一些主流或者流行的w e b 开发框架的研究是十分有必要的。目前,基 于j a v a 的w e b 开发框架的数量众多,国内和国外的用于各种目的的框架层出不 穷,如果对这些框架的特性不了解,则很难在提供相同或类似功能的框架之间做 出正确而理性的选择。同时,即使做出了合理的选择,如果对目标框架的特点不 熟悉,也很难完全发挥出框架应有的能力,甚至会因为陌生框架的引入而影响项 目的开发周期,反而增加了开发者的负担。为了避免这种事与愿违的情况发生, 就需要对某些框架事先进行研究,剖析其功能和特点,并加以比较,这样就可以 做到心中有数。在实际项目的开发过程中,借助已有的知识储备,就可以有效地 减少在项目开发之初评估和选择框架的时间,同时对使用框架的了解也有利于提 高开发效率,使得调试、除错更轻松。随着项目经验的累积,开发者就会逐渐发 现什么框架最适合什么领域,在娴熟使用框架的前提下,开发者甚至可以对框架 进行修改和定制。这样就做到了框架级的复用。 本课题的研究涉及框架的使用和整合,目的在于向j 2 e e 开发者展示由框架 第1 帝绪论 引入的新的概念和编程方式,使开发者对本课题研究的目标框架的结构和功能有 一定的了解,由此帮助开发者在实际应用中根据需求选择使用不同的框架,充分 发挥框架的优势,提高开发效率。 1 4 论文研究内容及文章组织结构 第一章简要介绍论文课题背景、研究现状、研究目的和意义,明确了课题的 研究方向,概括性地说明了本文涉及的问题和论述的内容。 第二章介绍了本课题的技术背景。本课题应用的目标领域是j 2 e e 开发,因 此首先介绍了j 2 e e 的概念、体系结构和主要技术,然后提出j 2 e e 存在的问题 以及众多开源框架为我们提供的解决方案。 第三章进一步详细介绍了本课题研究的目标框架的技术特点。本课题研究的 目标框架包括s t r u t s 、s p r i n gm v c 、s p r i n g 、h i b e r n a t e 、i b a t i ss q lm a p s 和s p r i n g j d b c 。其中,s p r i n gm v c 和s p r i n gj d b c 是s p r i n g 框架的m v c 模块和数据访 问模块,它们可以独立于s p r i n g 框架存在,并提供完备的功能,因此本课题将 二者作为两个框架进行研究。 第四章分析了网络层框架s t r u t s 和s p r i n gm v c ,持久层框架h i b e r n a t e 、i b a t i s s q lm a p s 和s p r i n gj d b c 的优缺点,以及使用框架带来的好处和付出的代价, 并指出各个框架的适用领域,在框架选择问题上向读者提供了一个初步的参考。 第五章介绍了农资网电子商务平台系统的原型,并通过引入本课题研究的目 标框架对系统原型进行实现。实现过程的介绍包括需求的分析、系统原型体系结 构的设计、数据库表结构介绍,以及具体实现细节的阐述。系统实现是以w e b 应用程序普遍的三层结构为主线,逐一介绍持久层、业务逻辑层和网络层的实现 方法,最后介绍了将各层框架进行整合的配置工作。 结论部分回顾了本课题的研究内容,以及课题的研究意义与价值,对课题所 做的研究工作进行了总结与展望,并指出课题今后的研究方向。 第2 章j 2 e e 与w e b 开发框架 第2 章j 2 e e 与w e b 开发框架 2 1j 2 e e 概述 随着我国企业信息化步伐的推进,企业对现代信息技术有了全面而深刻的认 识。实际上,企业信息化就是企业利用现代信息技术,通过信息资源的深入开发 和广泛利用,实现企业生产过程的自动化、管理方式的网络化、决策支持的智能 化和商务运营的电子化,不断提高生产、经营、管理、决策的效率和水平,进而 提高企业经济效益和企业竞争力的过程。从早先的m r p ,到目前逐渐深入和扩 展的e r p ,再到方兴未艾的电子商务,可以说国内企业对企业内部的信息化建设 是越来越重视,越来越多的企业丌始关注信息化系统的伸缩性和可扩展性。 j 2 e e 作为一种支撑企业级计算任务的主流技术,提供跨平台特性,为不同 操作系统上的应用软件集成提供方便,从而满足企业内部对系统的要求,逐渐被 越来越多的企业客户所认识和接纳。 j 2 e e ,即j a v a2 平台企业版,它定义了开发多层企业应用程序的标准。j 2 e e 实现的服务具有高可用性、安全性、可依赖性和可扩展性,j 2 e e 平台凭借这些 特性致力于为企业客户降低运营所需成本,在企业为其客户服务时尽量提高反应 速度,缩短响应时洲2 。 具体来说,j 2 e e 平台为企业应用带来了以下好处p 】: 在各种领域创建了使用于企业计算需要的一系列标准,如数据库链接、消息 中间件、w e b 组件、企业业务组件等等,这些标准构成了企业应用开发的全 过程。 基于开放标准,提供开发组件的标准平台,适用于不同的供应商,用户因此 有了更多厂家的选择。 缩短了产品投入市场时间。产品都是在现有的基础部件之上开发,从而摆脱 了自己开发中间件的困扰而专注于自己的业务应用。 总之,j 2 e e 是一套全然不同于传统应用开发的技术架构,包含许多组件, 主要目标是简化并规范应用系统的开发与部署,进而提高可移植性、安全与复用 价值。 2 1 1j 2 e e 体系结构 如图2 1 ,j 2 e e 架构包括四个层次【4 j : 1 用户层( c l i e n tt i e r ) 用户层也就是客户端层。用来于用户交互,并把来自系统的信息显示给用户。 包括h t m l 用户,a p p l e t 和j a v a 应用程序等。 2 网络层( w 曲t i e r ) 网络层一般也称为p r e s e n t a t i o nt i e r ,该层由w e b 服务器和w e b 组件构成。 北京t # t 学l 学* 女 j 2 e ew e b 组件包括j s p 和s e r v l e t ,主要用米处理客户请求,嗣用相应的逻 辑模块,并把结果以动态网页的形式返回到客户端。 3业务层( b u s i n e s s t i e r ) 这一层处理应用的核心业务逻辑。业务组件通常被实现为运行在e j b 容器内 的e j b 组件,e j b 容器提供组件生命周期、管理持久性、事务和资源分配等。 所以这一层也叫e j b 层或应用层。 4企业信息系统层( e i st i e r ) 这一层处理企业系统软件,包括企业基础系统、数据库系统和其他遗留系统。 它是j 2 e e 应用和非j 2 e e 应用或遗留系统集成的连接点在普通j 2 e e 应用 中,该层通常被称作p e r s i s t e n c et i e r 。 其中,网络层、业务层和企业信息系统层组成了j 2 e e 应用中普遍存在的三 层体系结构。 j 2 e e j 2 e e a p p l i c 日f i o n1a o pi c a t i o t l2 i = = 匕:= 围 c l i e n t c l i e n t t i e r m a c h i n e w e b l t i e r i j 2 e e s e r v e r m a c h i n e b u s i n e s s t i e r 。e i s ,l 潞d a t a 黼b a s 。e 图2 1j 2 e e 体系结构”1 f i g u r e2 - 1j 2 e ea r c h i t e c t u r e h l 正如我们在图上看到的一样,将应用分层就相当于划清了层与层之间的界 限,使得不同逻辑实体的边界清晰了,对于软件开发人员来说,应用程序的分层 就等于界定了各自的毋 责,明晰了开发团队的分工,从而使得各个团队可以并行 工作,将他们互相之间产生的影响降到最低限度。 212j 2 e e 相关技术 为实现企业级分布式应用j 2 e e 定义了丰富的技术标准,包括a p i 。这些 a p i 是j 2 e e 每一个产品都必须提供给应用组件的。这些技术涵盖数掘库访问、 分布式通信、安全等等。具体来说,它们包括: 习 【:固 第2 币j 2 e e 与w e b 开发框架 曼曼曼曼曼曼曼曼曼曼! ! ! ! ! ! 曼! 曼曼! 曼曼! 曼! i i_ ! 曼! ! ! ! ! ! 曼! 曼! 曼! 曼! ! ! 曼! 曼蔓! ! 曼! 曼! 曼曼曼蔓曼曼曼量曼! 曼曼曼! 曼! 皇曼曼皇 j a v as e r v l e t s j a v a s e r v e rp a g e s j d b c e n t e r p r i s ej a v a b e a n s 除此之外,j 2 e e 还包括i 州i i i o p 、j n d i 、j m s 、j t a 、j a v am a i l 、j a a s 等 等技术。总之,j 2 e e 是一个庞大的,分支众多的技术联合体。 2 2 新兴的w e b 开发框架 2 2 1 传统j 2 e e 的问题 自2 0 0 0 年以来,虽然j 2 e e 受到了广泛的关注与支持,但事实上,在实践中 表明了j 2 e e 本身还存在一些有待解决的问趔2 6 】: j 2 e e 应用程序大多包含过量的无用代码。j n d i 查询代码,获取和释放j d b c 资源的t r y c a t c h 代码块等等,这些代码不仅毫无用处,而且编写和维护这样 的代码无疑会占用大量的项目资源,而这些资源应该集中用于应用程序的业 务领域。 e j b 组件模型过分复杂。e j b 技术是作为在j 2 e e 应用程序中实现业务逻辑 时降低复杂性的一种方法。不过,实际上这一目标很难达到。 j 2 e e 应用程序难以进行单元测试。j 2 e ea p i ,尤其是e j b 组件模型,它们 的设计并没有考虑单元测试的简易性。在j 2 e e 应用服务器之外对基于e j b 和其他j 2 e e a p i 的应用程序进行测试,是相当困难的。 2 2 2 开源w e b 开发框架 由于j 2 e e 的这些问题,开源社区涌现出许多基于j a v a 语言的w e b 开发框架 3 4 】,它们的共同目标是解决j 2 e e 应用程序开发者遇到的问题,简化开发过程, 提高开发效率。下面简述了目前较为活跃的开源框架: s t r u t s s t r u t s 是一个基于s u nj 2 e e 平台的m v c 框架,主要是采用s e r v l e t 和j s p 技 术来实现的1 5 1 。 s p r i n gm v c s p r i n gm v c 是结构最清晰的m v cm o d e l2 实现【6 1 。 t a p e s t r y t a p e s t r y 是一个开源的基于s e r v l e t 的应用程序框架,它使得j a v a 代码与 h t m l 完全分离。 j a v as e r v e rf a e e s ( j s f ) j a v a s e r v e rf a c e s 技术简化了服务器应用程序用户界面的开发。各种技术水平 的开发者都能够利用它快速创建w e b 应用程序。 北京t 业大学t 学硕 :学位论文 s p r i n g s p r i n g 是一个应用程序框架,其本质在于给普通j a v a 对象提供企业级服务, 以一致的、高效的方式构造整个应用程序7 1 。 h i b e r n a t e h i b e r n a t e 是一个开放源代码的对象关系映射框架【8 】,它对j d b c 进行了非常 轻量级的对象封装,使得j a v a 程序员可以使用对象编程思维来操纵数据库。 i b a t i ss q l m a p s i b a t i ss q lm a p s 是一个功能强大的非常有用的s q lm a p 工具,它能够将s q l 语句映射成j a v a 对象。 s p r i n gj d b c s p r i n gj d b c 框架通过在j d b c 的顶部提供一个抽象层1 7 1 ,从而在有效利用 j d b c 特性的同时,简化了j d b c 编程。 2 3 本章小结 在本章中,我们简单了解了j 2 e e 平台的概念、体系结构以及其核心技术。 j 2 e e 平台是开发传统的企业级应用程序的主流平台,其拥有的平台无关特性和 庞大的基础设施架构为企业应用开发者提供了一定的便利。但同时,开发者却无 法避免伴随j 2 e e 平台的高度复杂性和性能问题。j 2 e e 确实解决了企业应用开发 中的一些问题,但解决得还不够好。因此,一个个开源框架应运而生,它们分别 针对j 2 e e 开发中某一层面的问题提供了更灵活、更优雅也更完善的解决方案。 第3 章主流w e b 开发框架的技术特点 3 1 网络层 3 1 1s t r u t s s t r u t s 是一个基于s u nj 2 e e 平台的m v c 框架,其本质是把s e r v l e t 、j s p 、自 定义标签和信息资源整合到一个统一的框架中1 9 j ,开发人员利用其进行开发时不 用再自己编码实现全套m v c 模式。作为一个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 都提供了对应的实现组件。 c o n t r o l l e r :在s t r u t s 中c o n t r o l l e r 功能由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 对 象构成【1 0 l 。核心是一个s e r v l e t 类型的对象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 包括一组基于配置的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 处理 器对象之问的映射。 m o d e l :s t r u t s 为m o d e l 部分提供了a c t i o n 和a c t i o n f o r m 对象。所有的a c t i o n 处理器对象都是开发者从s t r u t s 的a c t i o n 类派生的予类。a c t i o n 处理器对象 封装了具体的处理逻辑,调用业务逻辑模块,并且把响应提交到合适的v i e w 组件以产生响应。s t r u t s 提供的a c t i o n f o r m 组件对象,它可以通过定义属性 描述客户端表单数据。开发者可以从它派生子类对象,利用它和s t r u t s 提供 的自定义标记库可以实现对客户端的表单数据的良好封装和支持,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 组件对象实现了对v i e w 和m o d e l 之间交互的支 持。s t r u t s 通常建议使用一组j a v a b e a n 表示系统的内部状态l l ,以及在实现 时把a c t i o n 和业务逻辑分离。这样可以实现业务逻辑的重用。 v i e w :s t r u t s 应用中的v i e w 部分是通过j s p 技术实现的。s t r u t s 提供了自定 义的标记库可以使用,通过这些自定义标记可以非常好地和系统的m o d e l 部 分交互,通过使用这些自定义标记创建的j s p 表单,可以实现和m o d e l 部分 中的a c t i o n f o r m 的映射,完成对用户数据的封装,同时这些自定义标记还 提供了像模板定制等多种显示功能。 s t r u t s 框架的处理流程清楚的体现了m v c 系统的特点,简单的s t r u t s 组件结 构如图3 1 所示。s t r u t sc o n t r o l l e ra 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 n 处理器对象进行处理。a c t i o n 处理对象 访问a c t i o n f o r m 中的数据,处理和响应客户请求,它还调用后台的b e a n 组件, 这些组件封装了具体的业务逻辑。a c t i o n 处理器对象根据处理结果通知 c o n t r o l l e r ,c o n t r o l l e r 进行下一步的处理。 北京t 、j k 大学丁学硕十学位论文 圈 图3 - 1s t r u t s 处理流程 f i g u r e3 - 1s t r u t sp r o c e s sf l o w 3 1 2s p rin gm v c s p r i n gm v c 同样是一个基于m v c 设计模式的w 曲框架。虽然与s t r u t s 一样 属于m v c 开发框架,但它在实现方式上与s t r u t s 有所不同。 c o n t r o l l e r :在s p r i n gm v c 框架中,用户发送的任何请求的入口都是 d i s p a t c h e r s e r v l e t l l 2 j 。d i s p a t c h e r s e r v l e t 将检查用户请求的操作,从而决定调 用哪个控制器来执行给定的请求。 m o d e l :实际承担w e b 相关处理,并最终把任务委托给中间层的组件是控制 器。s p r i n g 包括多种控制器,全部针对解决w e b 应用程序中的特定问题,比 如表单处理和向导风格的工作流。 v i e w :s p r i n gm v c 提供v i e w 接口,从而实现对客户端的响应,即生成视图。 通常视图是h t m l 页面,但s p r i n gm v c 并没有把用户约束在某一种视图技 术上,可以配合框架提供的视图解析器来达到对多种视图技术的支持。 图3 2 为s p r i n gm v c 的处理流程。整个处理过程从一个h t t p 请求开始: 1 d i s p a t c h e r s e r v l e t 接收到请求后,根据配置文件中配置的处理器映射,找到 对应的h a n d l e r m a p p i n g ,根据配置的映射规则,找到对应的处理器。 2 调用相应处理器中的处理方法,处理该请求,处理器处理结束后会将一个 m o d e l a n d v i e w 类型的数据传给d i s p a t c h e r s e r v l e t ,这其中包含了处理结果的 视图和视图中要使用的数据。 3 d i s p a t c h e r s e r v l e t 根据得到的m o d e l a n d v i e w 中的视图对象,找到一个合适的 v i e w r e s o l v e r ( 视图解析器) ,根据视图解析器的配置,d i s p a t c h e r s e r v l e t 将 第3 章主流w e b 开发框架的技术特点 蔓曼曼曼曼曼! 曼! 曼曼曼曼曼曼! 曼! 曼! 皇曼! ! ! ! ! 曼曼曼曼曼! | :l il | l ! 苎! 曼! ! ! 曼! 曼! 曼曼! ! ! ! ! 曼曼皇! 曼! ! ! ! ! 曼! 曼! 曼曼 视图要显示的数据传给对应的视图,最后给浏览器构造一个h t t p 响应。 囹霁压巫固 l:习j k 处蛙嚣 f ,。 i q 婴 ; j 8 i l 而晌l 医盈 1 圳:1 键f 器啼几i 赢 i _ _ - _ - _ _ _ - - - - _ _ - 一 匕于瞪戳- ( 卫巫堕一 4 州j 恒口处l l b k 靠 i t 区蛰 图3 - 2s p r i n gm v c 处理流程 f i g u r e3 - 2s p r i n gm v cp r o c e s sf l o w 3 2 业务逻辑层 s p r i n g 框架为应用的业务逻辑层提供了两项实用的功能控制反转与面向 方面编程能力。下面的章节将分别介绍这两项功能。 3 2 1 控制反转与依赖注入 i o c ( i n v e r s i o no f c o n t r 0 1 ) ,即控制反转。按照传统的编码习惯,程序代码直 接控制程序流程;相对于传统方式,控制反转的实质是将一部分程序流程、对象 间关系和依赖托管给容器,从而将程序中对象的建立、销毁以及相互依赖与程序 流程解耦,解决了程序组件的依赖性、配置管理以及对象的生命周期等问题i l 引。 事实上,控制反转也有另一个名字叫i ( d e p e n d e n c yi n j e c t i o n ) ,即依赖注入。 3 2 1 1 依赖注入的两种方式 依赖注入在实践中有两种实现形式,设值方法注入和构造方法注入。 设值方法注入:使用设值方法注入时,组件通过j a v a b e a n 属性来表达自己需 要配置的值和依赖对象,具体来讲,就是组件需要提供一组相关的s e t t e r ( 设 值) 方法以供容器将依赖注入。 构造方法注入:使用构造方法注入时,组件以构造方法参数的形式描述自己 需要的依赖关系。具体来讲,就是组件需要提供相关的构造方法,方法参数 包括组件的各种依赖,然后通过容器在构造组件时将依赖注入。 3 2 1 2s p rin g 框架对io c 的支持 s p r i n g 框架对设值方法和构造方法依赖注入都提供了完善的支持。一般情况 北京:1 i k 大学t 掌坝十学位论文 曼曼曼! ! ! ! ! ! 曼! i i i ii i ii: = = i ! ! ! ! ! ! 曼曼 下,s p r i n g 框架的i o c 容器是通过x m l 文件进行配置的。不过,它也允许用户 实现b e a n d e f i n i t i o n r e a d e r 接口,使其可以理解用户的自定义元数据,并用它来 配置s p r i n g 的i o c 容器。 另外,s p r i n g 框架是分层的,子容器可以覆盖从上层容器得到的b e a n 声明, 也可以从外部文档中引入b e a n 声明,这是让应用模块化的有效方法。 3 2 2 面向方面编程 a o p 的全称是面向方面编程( a s p e c t - o r i e n t e dp r o g r a m m i n g ) ,它是一种与面 向对象编程截然不同的看待应用程序结构的方式,其目的是将面向对象编程所无 法避免的重复代码问题以一种更加通用的方式模板化【1 3 】,a o p 称这一系列问题 称为横切面( c r o s s c u t t i n g ) 。例如,系统日志、权限管理以及声明式事务这类的 需求很难用面向对象的方法,即封装和继承等方法进行抽象。换句话说,面向对 象的编程方式无法避免这类代码的重复,即必须在所有需要记录日志、需要进行 权限检查或者需要运行事务的方法中,添加相同的代码,从而实现相应的功能。 像这样重复的代码写起来麻烦,维护起来就更麻烦,理想的情况是将这些相同的 代码归到一起。a o p 向开发者提供的能力可以将这些原

温馨提示

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

评论

0/150

提交评论