已阅读5页,还剩52页未读, 继续免费阅读
(管理科学与工程专业论文)基于jsf和hibernate的web应用研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于j s f 和h i b e r n a t e 的w e b 应用研究与实现 摘要 随着i n t e r n e t 技术和企业信息化建设的发展,构建基于w e b 的应用系统的 需求越来越复杂,开发周期要求越来越短,同时对系统的稳定性、扩展性和可 维护性要求也越来越高。s u n 公司提出了j 2 e e ( j a v a2 ,e n t e r p r i s ee d i t i o n ) 设计模式,它是一个能够构建分布式企业应用并能满足扩展性、性能、安全性 的解决方案。基于j 2 e e 的多层w e b 体系结构逐渐发展成熟,多层的j a v aw e b 应用开发已成为主流。但是j 2 e e 提供的w e b 层的标准组件将页面显示、业务逻 辑和数据处理都集中在页面代码中,导致应用程序的耦合性很强,从而引起w e b 应用的扩展和维护极其困难,也不利于开发人员分工协作;同时,j 2 e e 的核心 e j b 组件由于它的复杂性,给业务逻辑层的开发增加了难度,并且它需要e j b 容器的支持,又增加了开发代价。于是怎样快速地构建一个具有可重用性、可 扩展性和易维护的w e b 应用成为j 2 e e 开发的首要问题。 论文首先对j s f 框架和h i b e r n a t e 技术进行了深入的分析;其次,根据w e b 系统开发的特点以及j 2 e e 设计模式的不足提出了一种集成j s v 和h i b e r n a t e 的 w e b 应用的架构模型,重点给出了集成框架中的u i 组件、事件模型和数据库的 映射,并对集成框架开发w e b 应用中可能遇到的问题进行了分析,给出了其解 决方法;最后以基于w e b 应用的图书馆管理系统为例,详细讨论了j s f 和 h i b e r n a t e 集成框架在该系统中的应用。实践表明,应用这种集成框架可以提高 系统开发的效率,同时满足系统扩展性和可维护性的要求。 关键词:j 2 e e ;m c 模式;j s f ;对象关系映射;h i b e r n a t e i i l r e s e a r c ha n dr e a l i z a t i o no fw e b a p p f i c a t i o n b a s e do nj s fa n dh 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 fi n t e r n e ta n de n t e r p r i s ei n f o r m a t i o nc o n s t r u c t i o n , t h e r e q u i r e m e n t so fw e b - b a s e da p p l i c a t i o ns y s t e m sh a v eb e c o m em o r ec o m p l e x ,t h e d e v e l o p m e n tc y c l ei si n c r e a s i n g l ys h o r t e r s y s t e ms e a l a b i l i t ya n dm a i n t a i n a b i l i t y h a v eb e c o m em o l es o p h i s t i c a t e d s u ns u b m i t t e di t sj 2 e e ( j a v a2 ,e n t e r p r i s ee d i t i o n ) d e s i g np a t t e r n , i ti st ob u i l dad i s t r i b u t e de n t e r p r i s ea p p l i c a t i o na n dm e , e ts e a l a b i l i t y , p e r f o r m a n c e 。a n ds e c u r i t ys o l u t i o n s t h em u l t i - t i e rw e ba r c h i t e c t u r eb a s e do nj 2 e e g r a d u a n yp e a f e e t , m u l t i l a y e rj a v aw e ba p p l i c a t i o nd e v e l o p m e n th a sb e c o m e p r e v a l e n t h o w e v e r , f o rt h ej 2 e e s t a n d a r dc o m p o n e n t s ,v i e wo fp a g e s ,b u s i n e s s l o 西ca n dd a t ap r o c e s s i n ga r ec o n c e n t r a t e di n t h ec o d eo fp a g e s ,r e s u l t i n gi n a p p l i c a t i o n so fas t r o n gc o u p l i n g ,w 曲a p p l i c a t i o nw h i c hl e dt ot h ee x p a n s i o na n d m a i n t e n a n c eo fe x t r e m e l yd i f f i c u l ta n di sn o tc o n d u c i v et od e v e l o p m e n tc o o p e r a t i o n a n dd i v i s i o n n 峙e j bo ft h ec o r ej 2 e ec o m p o n e n t , b e c a u s eo fi t sc o m p l e x i t y i n c r e a s e dt h ed i 颇c u l t i e so ft h ed e v e l o p m e n to fb u s i n e s sl o g i ct i e r , a n di tn e e d st h e s u p p o r to fe j bc o n t a i n e r s ,i n c r e a s e dd e v e l o p m e n tc o s t s s oi tb c c , o m et h ep r i m a r y j 2 e ed e v e l o p m e n ti s s u e sh o wf a s t l yb u i l dar e u s a b l e ,s e a l a b i l i t ya n dm a i n t a i n i n g w e b a p p l i c a t i o n s f i r s t l y ,t h i sp a p e rh a st h ei n - d e p t ha n a l y s i sf o rj s ff r a m e w o r ka n dh i b e r n a t e t e c h n i c a l s e c o n d l y ,a c c o r d i n gt ot h ec h a r a c t e r i s t i c so fw e bs y s t e md e v e l o p m e n t a n dt 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 f t h ej 2 e ed e s i g np a t t e r n , aw e b a p p l i c a t i o n i n t e g r a t i o nf r a m e w o r km o d e lb a s e do nj s fa n dh i b e r n a t eh a sb e e na d v a n c e d t h e f o c u si su ic o m p o n e n t s , e v e n tm o d e la n dd a m b a s em a p p i n go ft h ei n t e g r a t i o n f r a m e w o r k 1 1 1 ep r o b l e m st h a tm a yb ee n c o u n t e r e do nw e b a p p l i c a t i o nd e v e l o p m e n t f r a m e w o r kh a v eb e e n a n a l y s e d , i t s s o l u t i o n sh a v e b e e ng i v e n f i n a l l y ,t h e w e b b a s e d a p p l i c a t i o nl i b r a r ym a n a g e m e n ts y s t e m 雏a ne x a m p l e t h i sp a p e r d i s c u s s e dt h ea p p l i c a t i o no fj s fa n dh i b e r n a t ei n t e g r a t i o nf r a m e w o r ki nt h es y s t e m p r a c t i c es h o w st h a tt h ea p p l i c a t i o no ft h i si n t e g r a t e df r a m e w o r kc a l li m p r o v et h e e f f i c i e n c yo fw e bs y s t e m sd e v e l o p m e n t , w h i l em e e t i n gs y s t e ms e a l a b i l i t ya n d m a i n t a i n a b i l i t yr e q u i r e m e n t s k e yw o r d s :j 2 e e ;m v cp a t t e r n ;j s f ;o b j e c tr e l a t i o nm a p p i n g ;h i b e r n a t e i v 插图清单 图2 - 1 埘c 模式图5 图2 - 2m v c 组件关系和功能5 图2 - 3s w i n g 组件的m v c 实现7 图2 - 4s t r u t s 框架的m v c 实现8 图2 - 5j s f 与其他技术之间的关系9 图2 - 6j s f 应用是事件驱动的1 0 图2 - 7j s f 的 f v c 架构模型1 1 图2 - 8j s f 请求处理生命周期1 2 图3 - 1 持久层逻辑边界1 4 图3 _ 2h i b e r n a t e 体系结构1 6 图3 - 3h i b e r n a t e 工作原理1 7 图3 - 4h i b e r n a t ea p i 1 8 图4 - 1 基于j s f 和h i b e r n a t e 的w e b 系统架构2 5 图4 - 2j s f 框架标准u i 组件2 6 图4 - 3j a v a b e a n 事件模型2 8 图4 - 4j s f 事件处理模型2 8 图4 - 5 单向多对多关联3 6 图4 - 6 多向多对多关联3 7 图5 - 1l i b r a r y 功能模型图3 8 图5 - 2l i b r a r y 应用数据表3 9 图5 - 3l i b r a r y 应用页面流程图4 3 图5 - 4b o o k l i s t j s p 页面图4 5 闰5 - 5l i b r a r y 应用借书页面4 6 图5 - 6 借书成功返回结果4 7 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。 据我所知。除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写 过的研究成果,也不包含为获得 金g b 王些鑫堂 或其他教育机构的学位或证书而使 用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明 并表示谢意。 学位论文储签名了文签字隰岬年,月防日 学位论文版权使用授权书 本学位论文作者完全了解盒日王些盔堂有关保留、使用学位论文的规定,有权保留 并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅。本人授权金 筐工些盍堂可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、 缩印或扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后适用本授权书) 学位论文作者签名9 奚 瓣醐:寸 订e t 签字日期:尸年s 月计 , 学位论文作者毕业后去向: 工作单位: 通讯地址: n 导师签名:彩门 签字日期:概6 月y 日 电话; 邮编; 致谢 值此论文完成之际,衷心地向辛勤培育我的导师李兴国教授表示崇高的敬 意和深深的感谢。三年来,李老师在学习、生活和工作上给了我无微不至的关 心和帮助,我所取得的每一点成绩都倾注了恩师的大量心血,使我毕生难忘。 从论文的选题、构思到撰写以及修改完成都得到了李老师的指导、关心和支持。 李老师渊博的知识、严谨与实事求是的治学态度、高深的学术造诣、敏锐的学 术思想、忘我的工作精神、以及诲人不倦的师者风范是我终身学习的楷模。 感谢合肥工业大学管理学院杨善林、刘心报、梁昌勇、倪志伟、何建民、 钟金宏、刘业政、杜习英、杨颖、卢光松、顾东晓等老师对我的关心、指导和 帮助,他们的教诲为本文的研究提供了理论基础,并创造了许多必要条件和学 习机会。 在三年的研究生生活中,宁平、许玉龙、王靓、刘勇、林晓华、顾兢晶、 龚芳、张薇、舒艳华、石勇、李旭军、张炳明等同学在学习上和生活上也给予 我很大的帮助,在此一并谢过! 感谢父母的养育之恩和亲人对我的支持l 感谢各位评审专家在百忙中抽出 时间对论文进行了仔细的评阅。 v 作者:王炎 2 0 0 7 年5 月 第一章绪论 1 1 论文研究背景 随着i n t e r n e t 的快速发展和企业自身分布式信息处理的需求,w e b 应用受 到了越来越多的重视,企业纷纷开发适合自身业务的w e b 应用系统。由于w e b 系统的复杂度越来越高,系统往往是构建在企业已有系统之上的新应用,已有 系统往往呈现多样性,而且要求新应用能够不断的扩展来满足业务的变化,在 性能和安全性方面的要求也到了空前的地步。很多的w e b 系统在设计和实施阶 段都采取了分层架构的方法,构建多层的w e b 应用将会提高系统的重用性、可 扩展性和可维护性。但是,在多层w e b 体系结构的设计中,普遍存在程序可用 程度低、维护工作繁琐、应变能力较弱等不足;同时,多层w e b 应用软件需要 面对复杂的网络环境“1 。s u n 公司提出了j 2 e e ( j a v a2 ,e n t e r p r i s ee d i t i o n ) 设计模式,它是一个能够构建复杂企业应用并能满足扩展性、性能、安全性的解 决方案。j 2 e e 将应用分为表示层、w e b 层、业务逻辑层和数据层,并且提供了 j s p 、x m l 、e j b 、j t a 、j d b c 等多种技术支持各个层组件的开发。对于w e b 应用 系统来说,j 2 e e 分层体系中的表现层和数据层分别是浏览器和数据库管理系统, 所以主要的工作就是w e b 层和业务逻辑层的开发。为了使w e b 应用能够体现j 2 e e 分层架构和跨平台的优点,实现w e b 应用的稳定性、可扩展性、可维护性和可 重用性,如何开发和部署w e b 层和业务逻辑层的组件已经成为j a v aw e b 系统开 发的首要问题。 使用j a v a 开发w e b 层组件经历了几个发展阶段0 1 ,一开始是使用s e r v l e t , 直接利用r e q u e s t 和r e s p o n s e 对象接收和响应客户端的请求。s e r v l e t 的一个 显著缺点是需要在j a v a 代码中嵌入大量的标记语言( 如h t m l ) ,处理逻辑和显示 逻辑严重耦合,非常不利于程序的维护和界面的设计。基于这种情况,s u n 又发 展了j s p 技术,与s e r v l e t 正好相反,j s p 是在标记语言中嵌入j a v a 代码,但 它仍没有实现w e b 开发角色的分离,美工设计人员仍然要在一堆混杂脚本、标 记和j a v a 程序的代码中工作,不利于程序的维护。后来j s p 加入了t a bl i b r a r y 机制,鼓励开发人员使用自定义标签封装业务逻辑,j s p 页面尽可能只出现各种 标签。大量自定义j s p 标签的出现,并经过s u n 公司的标准化后,形成了 j s t l ( j a v as t a n d a r dt a bl i b r a r y ) 。j s t l 技术基本实现了页面逻辑和显示逻辑 的松散耦合,方便了w e b 的各种开发人员。随着w e b 应用程序规模的不断扩大, 现有的j s t l 明显不能满足开发需求,并且复杂的业务操作和页面之间的处理流 程都需要开发者自己编写代码实现,这给开发带来了难以想象的困难,于是一 些中间件厂商开发出框架技术,比较流行的有j s f 、s t r u t s 、s p r i n g 框架等。 这些框架技术提供了w e b 应用程序的开发模板,开发人员只要配置好相应的参 数就可以完成对w e b 应用程序的开发。经过大量实践的检验,框架技术已经成 为w e b 系统开发最常用也是最重要的技术,几乎所有的w e b 应用程序的开发都 要采用一种或者几种框架技术。 j s f ( j a v a s e r v e rf a c e s ) 是由s u n 公司倡导的技术,它的目的是为开发w e b 应用用户界面提供一个标准框架。j s f 体现了m v c 模式把业务逻辑和表现逻辑 相分离的思想,是一种可以开发富有表现力的用户界面的w e b 应用服务器端技 术0 1 。它提供了一种以组件为中心来开发j a v aw e b 用户界面的方法,从而简化 了开发。由于j s f 是通过j c p ( j a v a c o m m u n i t yp r o c e s s ) 制定的一种j a v a 标准, 因此开发工具供应商完全能够为j s f 提供易于使用的、高效的,可视化的开发 环境。 在业务逻辑层组件开发的过程中,对于数据库中实体的操作是通过j a v a 对 象来实现的,当实体对象在内存中创建后。它们不可能永远存在。最后,它们 要么从内存中清除,要么被持久化到数据库中哪。内存无法永久地保存数据, 因此必须对实体对象进行持久化。一旦实体对象被持久化,它们可以在应用再 次运行时被重新读入到内存,并重新构造出实体对象。那么就必须对数据库中 的关系表与j a v a 对象进行对象关系映射。 h i b e r n a t e 是一个面向j a v a 环境的对象与关系数据库映射工具,它是j a v a 应用和关系数据库之间的桥梁。h i b e r n a t e 提供了强大、高性能的对象到关系数 据库的持久化服务,它不仅仅管理j a v a 类到数据库表的映射,还提供数据查询 和获取数据的方法,可以大幅度减少开发时人工使用s q l 和j d b c 处理数据的时 间嘲。h i b e r n a t e 不仅提供了从j a v a 类到数据表之间的映射机制,也提供了数 据查询和恢复机制。相对于使用j d b c 和s q l 手工操作数据库,h i b e r n a t e 可以 大大减少操作数据库的工作量。另外h i b e r n a t e 可以利用代理模式来简化载入 类的过程,这将大大减少利用s q l 从数据库提取数据的代码的编写量,从而节 约开发对间和开发成本。此外,它是一个开源的代码,提供开放的a p i ,使用者 也可能根据需要进行扩充。h i b e r n a t e 可以和多种w e b 服务器或者应用服务器良 好集成,如今已经支持几乎所有的流行数据库服务器n ,。 1 2 研究意义 应用于w e b 层的开发主要有s t r u t s 和j s f 架构,s t r u t s 是a p a c h e 基金会 j a k a r t a 项目组的一个o p e ns o u r c e 项目,它采用了眦( m o d e 卜y i e w 吒o n t r o l l e r ) 模式。m v c 模式利用控制器来分离模型和视图,达到一种层间松散耦合的效果, 从而减弱了业务逻辑接口和数据接口之间的耦合性,提高了系统灵活性、复用 性和可维护性。但是s t r u t s 所扩展的j s p 标签有限,用户界面表现能力较差, 很难满足快速高效的开发b 层组件的需求。j s f 框架技术是由j c p ( j a v a c o m m u n i t yp r o c e s s ) 制定的一个w e b 应用框架标准,具有良好定义的请求处理 2 生命周期和丰富的组件层次结构,目的在于推动基于j a v a 的w e b 用户界面开发 的简易性。j s f 可重用、可扩展、基于组件的用户界面框架,在快速开发工具的 支持下,可以通过拖放组件的方式对w e b 用户界面进行可视化编辑,将用户界 面上的组件与一个数据源绑定,并将客户端用户界面产生的事件交给服务器端 处理,从而大大降低基于j a v a 的w e b 应用的开发难度,提高开发效率啪。因此, j s f 框架很好的解决了s t r u t s 用户界面交互的问题。 j a v a 对于业务逻辑中模型组件的操作通常通常通过j a v a 类实现,同时需要 对象关系映射( o b j e c tr e l a t i o nm a p p i n g ) 用来把对象模型表示的类映射到基 于s q l 的关系型数据库中去。e j b 组件技术提供了容器管理持久( c 咿) 模型完成 对象关系的映射,但需要庞大的e j b 容器的支持,e j b 标准的复杂性同时增加 了开发的难度。h i b e r n a t e 是一个面向j a v a 环境免费的对象关系数据库映射工 具,它对j d b c 进行了非常轻量级的封装,使得j a v a 程序员可以随心所欲地使 用对象编程的思维来操纵数据库,可以在用e s b 的j 2 e e 架构中取代c 肝完成数 据持久化的重任嘲。 集成j s f 框架和h i b e r n a t e 框架既能实现w e b 层页面代码和功能代码的分 离,又保证了在业务逻辑层有良好的对象关系映射机制实现数据库的操作,对 于w e b 应用系统的开发有几个主要的优点“”: ( 1 ) 实现了程序员和网页设计人员的分工。j s f 框架为网页设计人员提供了 一套标准的u i 组件,在工具的支持下,可以通过拖放,简单地添加到网页上, 然后设置某些显示属性来满足视觉要求。网页设计人员不需要知道u i 组件背后 的复杂代码,那是程序员的事,而程序员也不需要再处理任何与视觉相关的细 节,程序员所做的只是给u i 组件绑定类的属性或方法。虽然程序员和网页设计 人员需要修改同一份文件,但他们各司其职,各得其所,互不干扰。程序员和 网页设计人员工作的明确划分,是j s f 在易用性方面迈出的一大步。 ( 2 ) 实现了用户界面到业务逻辑的直接映射。h t t p 请求需要经历解码、类型 转换、有效性验证、状态保存、数据更新等环节,处理这些环节的所有细节, 对程序员来说是沉重的负担。在j s f 下,这些工作的很大一部分都由框架承担 了,在程序员看来,这个过程是透明的,用户界面端的h t t p 请求可以直接映射 到后端的一个事件处理例程,j s f 起到了承前启后的作用。 ( 3 ) 实现了系统的可重用性、可扩展性。j s f 和h i b e r n a t e 框架都是开放的 体系,利用j s f 和h i b e r n a t e 开发的组件也能够被其他的应用程序调用,并且 用户完全可以根据需求定制自己的用户界面组件、事件处理器、数据校验和转 换组件等,这些组件和j s f 和h i b e r n a t e 框架提供的标准组件一样是可重用的。 ( 4 ) 实现了系统的稳定性、可维护性。j s f 和h i b e r n a t e 技术是对于j s p 、 s e r v l e t 、j s t l 、j d b c 等技术的扩充,所以通过j s f 和h i b e r n a t e 构造的应用程 序能够在j 2 e e 应用服务器中良好运行,并且它们是通过标准的配置文件来进行 应用程序的部署,增加了程序的可维护性。 1 3 论文结构 本文主要结构安排如下; 第一章绪论。主要介绍了多层架构的w e b 应用开发背景,并提出基于j s f 和h i b e r n a t e 集成框架的开发方法,分析了论文的研究意义以及说明了论文的 组织结构。 第二章m v c 模式与j s f 框架技术。主要介绍m ,c 设计模式的思想以及实现 策略、j s f 框架的架构模型和工作原理、j s f 的构成元素和请求处理生命周期以 及j s f 框架的优点。 第三章对象持久化与h i b e r n a t e 技术。主要介绍了j a v a 对象持久化技术、 对象关系映射机制、h i b e r n a t e 技术的概述和工作原理。 第四章j s f 框架和h i b e r n a t e 技术集成架构模型。先对集成j s f 和 h i b e r n a t e 的原因进行分析,然后介绍了集成框架的架构模型和开发中可能遇到 的问题以及它们的解决方法。 第五章基于j s f 和h i b e r n a t e 集成的w e b 应用的实现。通过实现一个基于 w e b 的图书馆管理系统的实例介绍使用j s f 和h i b e r n a t e 集成框架的开发过程, 说明集成框架在w e b 系统开发中的优点。 第六章总结与展望。总结了本文的研究内容,并提出论文中的不足之处, 对下一步工作的方向做出展望。 4 第二章m v c 模式与j s f 框架技术 2 1w c 模式与实现框架 i l ,c 模式最初是s m a l l t a l k 语言提出的,应用于用户交互的应用程序,它是 m o d e l - v i e w c o n t r o l l e r 的缩写,中文翻译为“模式一视图一控制器”,m v c 应用 程序总是由这三个部分组成。e v e n t ( 事件) 导致c o n t r o l l e r 改变m o d e l 或v i e w , 或者同时改变两者。只要c o n t r o l l e r 改变了m o d e l s 的数据或者属性,所有依 赖的v i e w 都会自动更新。类似的,只要c o n t r o l l e r 改变了v i e w ,v i e w 会从潜 在的m o d e l 中获取数据来刷新自己。m v c 模式如图2 - 1 所示。 图2 - 1m v c 模式图 2 1 1m v c 模式设计思想 m v c 模式是将交互性的应用分为三个单独的组件:m o d e l 、v i e w 和 c o n t r o l l e r 。m o d e l 代表核心的应用数据与功能性的逻辑,v i e w 渲染数据并显 示给应用的用户,c o n t r o l l e r 处理用户的交互和输入。三个组件均通过变更传 播机制来通信,以保持彼此间的同步。m v c 组件的关系和功能如图2 2 所示。 图2 - 2m v c 组件关系和功能 ( 1 ) 视图( v i e w ) 代表用户交互界面,对于w e b 应用来说,可以概括为基于 h t m l 界面,但有可能为x h t m l 、x m l 和a p p l e t “i 】“。随着应用的复杂性和规模 性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,m v c 设计 模式对于视图的处理,仅限于视图上数据的采集和处理,以及用户的请求,而 不包括在视图上的业务流程的处理。业务流程的处理交予m o d e l 处理。比如一 个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数 据和请求传递给c o n t r o l l e r 和m o d e l 。 ( 2 ) 模型( m o d e l ) 就是业务流程状态的处理以及业务规则的制定。业务流程 的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终 的处理结果。业务模型的设计可以说是m v c 最主要的核心。目前流行的e j l 3 模 型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划 分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。它仅仅告 诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。对 一个开发者来说,就可以专注于业务模型的设计“”。 f ,c 设计模式告诉我们,把 应用的模型按定的规则抽取出来,抽取的层次很重要,这也是判断开发人员 是否优秀的设计依据。抽象与具体不能隔得太远,也不能太近。m v c 并没有提供 模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提 高重用性。我们可以用对象编程来做比喻,m v c 定义了一个顶级类,告诉它的子 类“你只能做这些”,但没法限制你能做这些。这点对编程的开发人员非常重要。 业务模型还有一个很重要的模型那就是数据模型。数据模型主要指实体对象的 数据保存。比如将一张订单保存到数据库,从数据库获取订单。我们可以将这 个模型单独列出,所有有关数据库的操作只限制在该模型中n 3 】【“,。 ( 3 ) 控制( c o n t r o l l e r ) 可以理解为从用户接收请求,将模型与视图匹配在一 起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它 就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的 用户请求,控制层不做任何的数据处理。例如,用户点击一个连接,控制层接 收请求后,并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什 么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一 个视图可能对应多个模型。 2 1 2m v c 模式的实现 现在有很多的框架技术都支持基于m v c 设计模式的开发,s w i n g 在j a v a 胖 客户端做的非常好,而s t r u t s 只是将它稍稍延伸到了w e b 领域。尽管s t r u t s 中引入了t i l e s 来提供更多的重用,但组件仍然更多以页面为中心,不同于 s w i n g 有着更好粒度( g r a i n ) 的、以部件( w i d g e t ) 为中心的方法“”。同s t r u t s 一样,j s f 着眼于j a v a 的w e b 应用,但更接近于s w i n g ,即以可重用的用户界 6 面组件为中心。j s f 的技术重点在v i e w 部分,它实现了w e b 应用程序设计角色 的完全分离。j s f 网页设计者只需要专注于页面的设计;应用程序开发者主要关 心n o d e l 部分的j a v a b e a n 的开发。j s f 将在下一节详细介绍,下面主要介绍一 下s w i n g 和s t r u t s 的m v c 实现。 ( 1 ) s w i n g 的坍塌式m v c 策略 图2 - 3s w i n g 组件的m v c 实现 s w i n g 并非严禁地基于m v c 的传统形式,它将v i e w 和c o n t t r o l l e r 坍塌 ( c o l l a p s e ) 成为一个,但保持m o d e l 是分离的。s w i n g 的创始者选择这种简化的 设计,是为了处理组件里经常出现的v i e w 和c o n t r o l l e r 之间交互的复杂性。 合并的v i e w - c o n t t r o l l e r 被称为u i 托管( d e l e g a t e ) 。每个s w i n g 组件都有一 个托管对象来负责渲染组件的v i e w ,以及处理用户的输入事件。u i 管理器是托 管的扩展,它从全局管理应用中组件的外观和风格“”。s w i n g 的坍塌式m v c 策略 如图2 - 3 所示。 ( 2 ) s t r u t s 的m v c 策略 s t r u t s 是m v c 架构技术的一种具体实现,是a p a c h e 公司2 0 0 2 年5 月作为 公司一个项目的组成部分问世,项目的创立者希望通过对该项目的研究,改进 和提高j s p 、以及面向对象程序设计的技术水平。s t r u t s 是一个开放源代码的 应用框架,通过把s e r v l e t 、j s p 、j a v a b e a n 、自定义标签和信息资源整合到一 个统一的框架中,s t r u t s 为w e b 开发人员提供了具有高可配置性的m v c 开发模 式。s t r u t s 的体系结构实现了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 应用中的组件。m o d e l 由代表系统状态和商业逻辑 a c t i o n 来构建,v i e w 的显示则由j s p 页面和表示组件来实现,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 来完成。s t r u t s 框架的m v c 实现模 式如图2 - 4 所示。 图2 - 4s t r u t s 框架的m v c 实现 s t r u t s 的应用程序的视图部分通常用j s p 技术构造。j s p 页面可包含称作 模板文本的静态h t 札、x m l 文本,并能插入基于特殊操作标记( 页请求时) 的动态 内容。j s p 环境包括一组自定义j s p 标记库( 如s t r u t s 标记库) 、标准j s p 操作 标记和安装用户自己的j s v 自定义标记库的工具。 s t r u t s 控制部分的核心是a c t i o n s e r v l e t ( 前端控制s e r v l e t ) 。 a c t i o n s e r v l e t 是对w e b 应用以及后台控制中心( 决定各请求如何处理) 访问的 唯一接口。它负责接受来自客户端( 例如w e b 浏览器) 的h t t p 请求,并将他们直 接派发到另一个w e b 页面,或者一个合适的处理器,由处理器提供相应。s t r u t s 中的处理器就是a c t i o n ,其本质是一个c o 曲n a n d 模式的j a v a b e a n 。他负责检查 请求中的信息,执行一些操作,也可能填装一些表示组件将要使用的数据,然 后同a c t i o n s e r v l e t 通信,决定下一步将控制转发到何处。 m o d e l 包括了应用的业务对象所描绘的领域模型,它并不是由s t r u t s 框架 明确要求或强制的。这些业务对象通常要么表现为企业级j a v a b e a n ( e j b ) 、j a v a 数据对象( j d o 或者其它类似h i b e r n a t e 的o g t l 框架) ,要么表现为像i ) a o 模式所 描述的那样,通过j d b c 访问数据库的j a v a b e a n 【l “。s t r u t s 的c o n t r o l l e r 在 s t r u t s 的a c t i o n 对象内同m o d e l 发生联系。如前所述,a c t i o n 通常会调用对 业务对象的操作来达到目的。 2 2j s f 框架技术 2 2 1j s p 框架介绍 2 0 0 1 年5 月e db u r n s 、c r a i gr m c c l a n a h a n 等人提出了j s f ( j a v a s e r v e r f a c e s ) 的意向,并在2 0 0 4 年5 月2 7 日最终形成规范。j s f 是一个基于j a v a 的 w e b 应用框架,侧重于用户界面的创建和管理。它与s e r v l e t 、j s p 等现有技术 相互补充,相得益彰。s e r v l e t 是j s f 的基础,它定义了如何用服务器端组件来 封装和实现w e b 应用程序“刑;j s p ( j a v a s e r v e rp a g e s ) 在s e r v l e t 的基础上提 供了页面模板创建文本内容( 如h t m l ) 的机制,它能与j s f 很好的集成“”;j s p 标准标签库( j s t l ) 则定义了套标准的j s p 操作,简化了j s p 页面的开发,它 能与j s f 的标签库互相补充。图2 5 描述了这几种技术之间的关系。 l应用程序 j s f j s f 标签库l l j s t l i 应用程序 标签库 j j s p 图2 - 5j s f 与其他技术之间的关系 j s f 主要包括两个方面的内容。1 :一个a p i 集合,用来表示用户接口组件、 管理组件的状态、处理事件和验证输入、定义页面间的导航以及支持国际化; 一个j s p 的自定义标签库,用来在j s p 页面中显示j s f 接口。其中a p i 集合是 j s f 的核心组成部分。可以把j s f 看成是s t r u t s 与s w i n g ( 基于j a v a 的桌面应 用程序的标准用户接口) 的组合“”:j s f 像s t r u t s 那样遵循m v c 体系结构,通过 一个s e r v l e t 控制器来管理应用程序的生命周期;而像s w i n g 那样提供了一个 可扩展的组件模型,此组件模型还包含了一个重要功能一一渲染组件 ( c o m p o n e n tr e n d e r i n g ) 。所谓渲染组件就是把组件所包含的信息转换成客户端 能够接受的表达形式,比如对于w e b 浏览器而言就是h t m l 页面,而对于手机等 无线移动设备所使用的w a p 浏览器而言就是w m l 页面,每个组件都具有各自的 渲染组件功能。 2 2 2j s f 框架的组成元素 尽管j s f 被设计成独立于具体协议和标记语言,大多数j a v a 开发者将它同 s e r v l e t 、j s p 一起使用,来创建基于h t m l 的w e b 应用,这些应用通常会通过 h t t p 同j a v a 应用服务器进行通信。j s f 规范的作者们自然清楚这样的统计分布, 9 因此他们的一个首要目标是解决与h t m l 客户端使用无状态h t t p 协议相关的一 系列问题“”。规范中突出了j s f 的许多功能,都与此目标有关。 u i 组件状态;j s f 特别解决了如何在同一w e b 客户会话内的不同请求之间 保存用户界面组件状态。 组件渲染:h t m l 只是众多标记语言的一种,丽每个w e b 客户所支持的具体 的标记语言可能不同。j s f 为形形色色的目标w e b 客户提供了渲染机制。 表单处理:大多数w e b 应用是以表单为基础的。j s f 提供了许多便利功能, 来处理基于表单的多页和单页请求。 表单验证:同表单处理过程一起,对表单进行验证也是非常必要的。j s f 帮助将此过程自动化,并在需要时提供错误报告。 事件模型:j s f 提供了强类型的组件事件模型,通过服务器端的处理器 ( h a n d l e r ) 来响应客户端生成的事件。 类型转换:由于w e b 客户通过h t t p 发起请求所提供的表单数据是字符串类 型,因此将这些字符串与应用m o d e l 相互转换的机制是非常有用的。j s f 提供了 基于类型转换的机制。 错误处理:所有应用必须处理应用错误和异常。j s f 提供了一个机制来处理 错误条件并将它们反馈给用户界面。 2 2 3j s f 框架工作原理 j s f 应用采用的是事件驱动模式,它是通过处理由页面中组件触发的事件来 工作的。这些事件是由用户的动作引起的。比如,当用户单击一个按钮时, 按钮会触发一个事件,通过编写监听这个事件的监听器,j s f 开发人员可以决定 当待定事件发生时j s f 应该做什么。图2 - 6 说明了j s f 应用的事件处理过程。 j s p 页面 图2 - f ij s f 应用是事件驱动的 j s f 应用看起来就像其他s e r v l e t j s p 应用一样,也有部署描述符。j s p 页 面、定制标记库、静态资源等。j s f 应用的用户界面容
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Python基础与大数据应用(第2版)(微课版) 教案单元 08 Python 爬虫框架
- 小学三年级数学教学工作总结
- 军用靶场自动报靶系统校验作业指导书
- 百分表使用作业指导书
- 家庭盆栽施肥与病虫害防治指南
- T∕CNLIC 0202-2025 电子包装用聚氨酯人造革合成革
- 有关肺癌考试试题及答案
- 2026年黑龙江省哈尔滨市南岗区中考化学模拟试卷(含答案)
- 2024-2025学年浙江省台金七校高二(下)期中信息技术试卷(含答案)
- 光电子玻璃无尘车间改造项目可行性研究报告模板申批拿地用
- 2025年泌尿外科学(副高)考试试题常考点试题带答案
- 2026年安全生产月课件
- 2026年淮南师范学院专职辅导员公开招聘笔试备考试题及答案解析
- 2026山东小升初语文作文备考集训(范文+指导)
- 安徽省合肥市2026届高三物理第二次教学质量检测试题【含答案】
- 2026年高考生物考前20天冲刺讲义(一)(解析版)
- 2026年二级建造师之二建市政工程实务押题宝典题库及答案详解【基础+提升】
- 2026年军校招生面试常见问题及回答思路
- 2026年二级建造师考试建筑实务案例分析题
- 四川省2026届高三适应性考试语文模拟试题及参考答案
- 班子成员2026年学习教育个人查摆问题对照发言材料
评论
0/150
提交评论