




已阅读5页,还剩47页未读, 继续免费阅读
(计算机应用技术专业论文)基于jsf、hibernate和spring框架的网上商店系统的设计和实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中文摘要 轻量级j 2 e e 应用程序开发方兴未艾,多种框架分别适用于w e b 应用程序不 同的层次,但组合应用这些框架可极大地减轻系统的开发难度,提高系统的可靠 性和可维护性。文中介绍的j s f 是表示层框架的标准,h i b e r n a t e 是一个完善的 对象关系映射工具,应用于持久化层,而s p r i n g 提供了w e b 应用的一个轻量级 解决方案。相比于传统的以e j b 为核心的重量级j 2 e e 开发,这些框架结合使用 可使开发工作方便快捷地进行下去,非常适应于基于m v c 模式的多层项目的开 发。 本文分析了j s f 的特点、生命周期及它所支持的多种模式;h i b e r n a t e 的体 系结构和o r m 技术;s p r i n g 的体系结构和i o c 及a o p 等概念。通过运用面向 对象方法,对网上商店进行了系统分析和架构设计。在此基础上使用m v c 模式 将上述三种框架结合使用,配合数据库架设技术实现了一个可实际应用的网上商 店系统。文中详细描述了运用面向对象方法进行系统分析、设计以及具体实现的 整个过程,并结合代码介绍了系统中主要模块的实现细节。 多框架组合使用可使设计人员更充分发挥每种框架的优势,使设计不再局限 于某种特定的技术实现,并有助于新的框架和模式的使用。 关键词:网上商店,j s f ,h i b e r n a t e ,s p r i n g ,m v c 模式 a b s t r a c t l i g h t w e i g h tj 2 e ea p p l i c a t i o nd e v e l o p m e n ti s i nf u l ls w i n g ,t h e r ea r em a n y f r a m e w o r k sa p p l i c a b l et oav a r i e t yo f w e ba p p l i c a t i o n so nd i f f e r e n tl e v e l s ,r e s p e c t i v e l y ; b u tt h ec o m b i n a t i o no ft h e i ra p p l i c a t i o nc a l lg r e a t l yr e d u c et h ed i f f i c u l t yo fs y s t e m d e v e l o p m e n t , i m p r o v es y s t e mr e l i a b i l i t ya n dm a i n t a i n a b i l i t y i nt h i sp a p e r , t h ej s fi sa s t a n d a r df r a m e w o r kf o rr e p r e s e n t a t i o nl a y e r , h i b e r n a t ei sag o o do b j e c t - r e l a t i o n a l m a p p i n gt o o l ,a p p l i e dt ol a y e r so fd u r a b l e ,a n ds p r i n gp r o v i d e sal i g h t w e i g h tw e b a p p l i c a t i o ns o l u t i o n s c o m p a r e dt ot h et r a d i t i o n a le j ba tt h ec o r eo ft h eh e a v y w e i g h t j 2 e ed e v e l o p m e n tf r a m e w o r k ,c o m b i n a t i o no ft h e i r a p p l i c a t i o nw i l le n a b l et h e d e v e l o p m e n tq u i c k l ya n dc o n v e n i e n t l yt og o ,a n dw i l lb ev e r ya p p l i c a b l et ot h em v c m o d e lb a s e do nm u l t i - t i e rd e v e l o p m e n tp r o j e c t s t h i sp a p e ra n a l y z e st h ec h a r a c t e r i s t i c so ft h ej s f , a n di t sl i f e c y c l es u p p o r to fa m u l t i - m o d a l i t y , h i b e r n a t ea r c h i t e c t u r ea n do r mt e c h n o l o g y ;s p r i n ga r c h i t e c t u r ea n d i o ca n da o pc o n c e p t s b yu s i n go b j e c t o r i e n t e dm e t h o d ,t h es y s t e ma n a l y s i sa n dt h e a r c h i t e c t u r ed e s i g no fo n - l i n es t o r ew a sc a r r i e do u t o nt h i sb a s i s ,t h et h r e em o d e l sw a s c o m b i n e db yt h eu s eo fm v cf r a m e w o r k ;i nc o n j u n c t i o nw i t had a t a b a s et e c h n o l o g y , a p r a c t i c a lo n - l i n es t o r es y s t e mw a si m p l e m e n t e d i nt h i sp a p e r , w eg i v ead e t a i l e d d e s c r i p t i o no f t h eu s eo f o b j e c t o r i e n t e da p p r o a c ht os y s t e m sa n a l y s i sd e s i g n , a sw e l la s t h ew h o l ei m p l e m e n t a t i o np r o c e s s ,w ea l s oi n t r o d u c e st h ei m p l e m e n t a t i o nd e t a i l so f t h e m a i nm o d u l e si nt h es y s t e m , c o m b i n i n go ft h ec o d e so ft h e s em o d u l e s t h ef r a m e w o r ko fm u l t i u s ec o m b i n a t i o nw i l le n a b l ed e s i g n e r st ot a k ea d v a n t a g e o f t h es t r e n g t h so f e a c hf r a m e w o r k , s ot h a tt h ed e s i g ni sn ol o n g e rl i m i t e dt oa p a r t i c u l a r t e c h n o l o g y , a n dh e l pt ou s et h en e wf r a m e w o r k sa n dm o d e l s k e yw o r d s :o n - l i n es t o r e ,j s f ,h i b e r n a t e ,s p r i n g ,m v cm o d e l 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的 研究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表 或撰写过的研究成果,也不包含为获得苤叠盘堂或其他教育机构的学位或证 书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中 作了明确的说明并表示了谢意。 学位论文作者签名:字受轫裔签字日翌: 年月日 学位论文版权使用授权书 本学位论文作者完全了解墨鲞盘堂有关保留、使用学位论文的规定。 特授权叁鲞盘堂可以将学位论文的全部或部分内容编入有关数据库进行检 索,并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。同意学校 向国家有关部门或机构送交论文的复印件和磁盘。 ( 保密的学位论文在解密后适用本授权说明) 学位论文作者签名: 纠玩奄 签字日期:年月 日 导师签名: 签字日期:2 7 年7 月h 日 天津学硕士学位论文第一章绪论 1 1 课题背景 第一章绪论 近年来,随着i n t e m e t 的迅速普及和网络用户的急剧增加,互联网已日益成 为提供、收集信息的最佳渠道并逐步进入到传统的流通领域。于是电子商务开始 流行起来,越来越多的商家在网上建起在线商店,向消费者展示了一种全新的购 物模式。 网上购物与传统购物模式相比,具有经营商品种类多,没有时间、空间限制, 价格相对较低,商品信息更新快,查找方便等优点,受到了越来越多顾客的青睐。 网上商店作为b 2 c ( b u s i n e s st oc u s t o m e r , 耳p 企业对消费者) 电子商务的前端平台, 在整个商务活动全过程中起着举足轻重的作用。网上商家要在竞争日益激烈的市 场环境下获得良好的经营业绩,就必须在网上商店的规划和建设上下功夫,采用 先进技术,为顾客提供一个功能完善,操作方便,安全快捷的购物环境儿“。 本文宗旨就在于讨论如何应用最新的技术手段,设计出一个适应b 2 c 应用 的易于开发部署的、性能优良的网上商店系统。 1 2 几种动态网页语言的比较 网上商店作为一种需要动态更新的w e b 应用程序,必然要选用某种动态网 页语言进行开发,下面我们来对目前最常用的几种动态网页语言进行一些技术性 的比较。 1 、p e r l ( p r a c t i c a le x t r a c t i o na n dr e p o r tl a n g u a g e ) 是一种脚本语言。最初的 w e b 应用大多是用p e r l 编写的,p e r l 很像c 语言,使用非常灵活,对于文件操 作和处理具有和c 语言一样的方便快捷的特点。因为p e r l 的灵活性、过度的冗 余语法、维护性差的缺点使得它的普及变得很困难。 2 、p h p ( h y p e r t e x t p r e p r o c e s s o r ) 是一种嵌入h t m l 页面中的脚本语言。它 大量地借用c 和p e r l 语言的语法,并结合p h p 自己的特性,使w e b 开发者能够 快速地写出动态页面。 p h p 的语法和p e r l 很相似,但是p h p 所包含的函数却远远多于p c r l ,p h p 天津学硕士学位论文第一章绪论 没有命名空间,编程时候必须努力避免模块的名称冲突。作为一个开源的语言虽 然需要简单的语法和丰富的函数,但p h p 内部结构的天生缺陷导致了p h p 不适 合于编写大中型网站。 3 、a s p ( a c t i v es e r v e rp a g e s ) 是美国微软公司的w m d o w si i s 系统自带的 脚本语言,利用它可以执行动态的w e b 服务应用程序。a s p 的语法非常类似 v i s u a lb a s i c ,是这几种脚本语言中最简单易学的开发语言。但a s p 也是这几种 语言中唯一的一个不能很好支持跨平台的语言。 因为a s p 脚本语言非常简单,因此其代码也简单易懂,结合h t m l 代码, 可快速地完成网站的应用程序,是小型网站应用的最佳选择。 4 、j s p ( j a v a s e r v e rp a g e s ) 是s u n 公司推出的一种动态网页技术。j s p 技术 是以j a v a 语言作为脚本语言的,熟悉j a v a 语言的人可以很快上手。 j s p 本身虽然也是脚本语言,但是却和p h p 、a s p 有着本质的区别。p h p 和 a s p 都是由语言引擎解释执行程序代码,而j s p 代码却被编译成s e r v l e t 并由j a v a 虚拟机执行,这种编译操作仅在对j s p 页面的第一次请求时发生,因此j s p 的执 行效率比p h p 和a s p 都高p 1 。 j s p 在技术结构上有着其他脚本语言所没有的优势:j s p 可以通过j a v a b e a n 、 标签等技术实现业务逻辑和显示相分离,并且j s p 可以使用j a v a b e a n 或者e j b 来执行应用程序所要求的更为复杂的处理,进而完成企业级的分布式的大型应 用。 因此要设计实现一个可以跨平台的中大型网站系统,基于j a v a 技术的j s p ( 作为j 2 e e 的一部分) 几乎成为唯一的选择。 1 3 框架的选择 1 3 1 框架概述 现阶段软件开发已经进入了面向对象、组件化应用的阶段,j 2 e e 平台已经 日趋成熟,并得到了广泛的应用。j 2 e e 中所定义的w e b 容器中的w e b 组件也成 为了目前开发w e b 应用主要工具和手段。 随着基于j a v a 的w e b 技术的成熟和市场的巨大需求,越来越多的开发人员 开始使用一些已经被广泛认同的开发框架,现在软件开发的思想观念已经不是 “我们是否需要使用软件框架”而是“使用什么软件开发框架”。框架是由具有 丰富经验的开发人员设计好的,性能比较稳定,应用程序各个层次之间的界面比 天津学硕士学位论文第一章绪论 较清晰,有利于代码的解耦。 1 3 2 框架比较 m v c 设计模式以其广泛的适应性和高度的扩展能力加上对生产效率的极 大提高成为了目前基于j a v a 的w e b 开发所逐步认可的开发模式标准。 目前用于开发w e b 应用程序的框架有5 0 多个,其中能比较好的支持m v c 模式开发的框架主要有s t r u t s 、w e b w o r k 、s p r i n g 、t a p e s t r y 、j s f 等。 下面我们来比较一下每种框架的优缺点: 1 、j s f : 优点:符合j a v ae e 标准,上手快速并且相对容易,由于越来越多大的软件 厂家对该标准提供支持,目前已经拥有大量可用的组件库一1 。 缺点:大量的j s p 标签,对r e s t 和安全支持不好。 2 、s p r i n gm v c : 优点:可独立完成表示层、业务层、数据持久层的所有工作。对覆盖绑定、 验证等提供生命周期管理,可以与许多框架无缝集成:j s p j s t l 、t i l e s 、v e l o c i t y 、 f r e e m a r k e r 、e x c e l 、x s l 、p d f 等。由于具有i o c 功能,便于软件测试,支持 a o p 编程闱【5 1 。 缺点:大量的x m l 配置文件,没有公共的父控制器,没有内置的a j a x 支 持。 3 、s t r i p e s : 优点:不需要书写x m l 配置文件,良好的技术文档。 缺点:影响相对较小,a c t i o n b e a n 里面的u r l 是硬编码的。 4 、s t r u t s : 优点:架构简单易于扩展, 标记库很容易应用f r e e m a r k e r 或者v e l o c i t y 来定制,基于控制器或者基于页面的导航巾1 。 缺点:文档组织得很差,对m v c 支持不完全。 5 、t a p e s t r y : 优点:功能强大,好用的h t m l 模板,每出一个新版本都有大量的创新。 缺点:文档过于概念性,不够实用,学习周期长。 通过以上对比,我们发现j s f 作为j a v ae e 标准,在表示层应用有着明显的 优势,开发人员可以方便地采用不同厂家提供的组件库,完成自己的界面设计工 作。而s p r i n g 与其它框架无缝集成的特点,使其与j s f 组合应用,可以充分发 挥每种框架的优点和长处。 天津学硕士学位论文第一章绪论 综合以上分析,本次设计决定采用j s f 、h i b e r n a t e 和s p r i n g 组合,以s p r i n g 技术为核心设计业务层,数据持久化使用h i b e r n a t e 完成,而表示层则采用s u n 公司的j s f 实现。 1 4 论文的工作与组织 本文是在作者近年从事电子商务课程教学工作的基础上,从课程研究和教学 实际的角度出发,根据信息技术与电子商务课程整合的特点,设计了本课题的研 究方案。文中从课题背景出发,运用面向对象方法对系统进行了分析、设计,对 功能模块进行了明确划分,在此基础上采用最新的程序设计方法,结合数据库构 建技术,实现了本次设计方案,最后对本次设计进行了总结。 论文结构安排如下:在接下来的第2 章中概述了系统开发过程中使用的主要 技术。第3 章介绍了采用面向对象方法进行系统分析的过程,并在此基础上形成 了各种类图、用例图、活动图和状态图。第4 章详细介绍了系统设计的全过程, 包括系统架构设计,功能模块划分,数据库设计,系统界面设计。第5 章介绍系 统实现的步骤,方法,并提供了设计完成的主要代码和实现结果。第6 章全文的 总结和对未来工作的展望。 天津大学硕士学位论文第二章相关技术介绍 2 1j s f 框架 2 1 1 , i s f 简介 第二章相关技术介绍 j s f 全称j a v as e r v e rf a c e s ,是s u n 公司开发的一种新的用于构建w e b 应用 程序的标准j a v a 框架,它提供了一种以组件为中心来开发j a v aw e b 用户界面 的方法,从而简化了开发过程1 。w e b 设计人员应用j s f 开发可以通过将用户界 面( u d 组件拖放到页面上实现客户端的显示界面,而不需要了解复杂的编程细 节。丰富的j s f a p i 为系统开发人员提供了强大的功能和编程灵活性。j s f 还 通过将良好构建的m v c 设计模式集成到它的体系结构中,确保了应用程序具有 更高的可维护性。由于j s f 是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 开发阵营,对j s f 标准提 供支持。目前已有多种开发工具为j s f 提供了易于使用的、高效的可视化开发 环境。 从网页设计人员的角度来看,j s f 提供了一套像是新版本的h t m l 标签,但 它不是静态的,而是动态的,可以与后端的动态程序结合,但网页设计人员不需 要理会后端的动态部份悼1 ,网页设计人员甚至不太需要接触j s t l 这类的卷标, 也可以动态的展现数据( 像是动态的查询表格内容) ,j s f 提供标准的标签,这 可以与网页编辑程序结合在一起,另一方面,j s f 也允许开发人员自己定制标签。 从应用程序设计人员的角度来看,j s f 提供一个与传统应用程序开发相类似 的模型,他们可以基于事件驱动来开发程序,不必关心h t t p 的处理细节,如果 必须处理一些视觉组件的属性的话,他们也可以直接在集成开发环境上拖拉这些 组件,点选设定组件的属性,j s f 还为应用程序设计人员处理了对象与字符串间 不匹配的转换问题。 从u i 组件开发人员的角度来看,他们可以设计通用的u i 组件,让应用程序 的开发产能提高,就如同在设计s w i n g 组件等。i j i 开发人员可以独立开发,只 要定义好相关的属性选项来调整细节,而不用受到网页设计人员或应用程序设计 人员的干扰。 从根本上讲,一个j s f 应用就是一个s e r v l e t j s p 应用。它有一个配置描述 符,有j s p 页面、客户定制标签、静态资源等等。不同的是,j s f 应用是事件 一5 - 天津大学硕士学位论文 第二章相关技术介绍 驱动的例。开发人员通过写一个事件侦听类来决定应用程序的行为。 l 、建立一个j s f 应用所需要的几个步骤: ( 1 ) 建立j s p 页面,用j s f 组件包装h t m l 元素。 ( 2 ) 写一个j a v a b e a n 用来保持用户输入与组件数据的状态。 ( 3 ) 写一个事件侦听器来决定当某事件发生时应该有什么反应,比如用户点 击了一个按钮或者提交了表单。j s f 支持两个事件:a c t i o n e ve n :t 与 v a l u e c h a n g e e v e n t 。a c t i o n e v e n t 是针对用户提交表单与点击按钮的,而 v a l u e c h a n g e e v e n t 在一个j s f 组件状态发生改变时触发。 2 、j s f 工作过程如下: j s p 页面是j s f 应用的用户接口。每个页面包括一些j s f 组件用来描述 w e b 控件,如表单、输入框、按钮等等。组件可以嵌入另一个组件中,正如输 入框可以在表单,每个j s p 页面就这样表示为组件树。j a v e b e a n 从用户的请求 中获取数据并存储。每当用户做任何事情,如点击按钮或者提交表单,都有事件 产生。然后事件消息通过h t t p 传到服务器。在服务器端,是一个配置了叫做 f a c e ss e r v l e t 的w e b 容器。f a c e ss e r v l e t 是所有j s f 应用的引擎。每个j s f 应 用在w e b 容器中都有独立的f a c e ss e r v l e t 。 另一个重要的对象是j a v a x f a c e s c o n t e x t f a c e s c o n t e x t ,它包括了所有关于 当前用户请求的必要信息。f a c e ss d - v l e t 去负责创建组件树,并把一个e v e n t 对 象传递给所有注册过的侦听器。开发人员通过与当前请求相对应的f a c e s c o n t e x t 得到这个页面的组件树。 客户端浏览器上w e b 控件产生的事件,被包含在一个h t t p 请求中,放 在一起的还有如浏览器类型、请求地址等其它信息。因此,所有需要f a c e ss e r v l e t 处理的请求必须指向这个s e r v l e t 。通过在配置描述符里用一个s e r v l e t - m a p p i n g 元素把一个特殊的u r l 式样映射到f a c e ss e r v l e t 来处理每个h 丌p 请求。为 了捕获组件产生的事件,开发人员需要为这个组件写一个侦听器,并把它注册给 这个组件。通过在表示组件的客户端标签中嵌入 元素来做到这 一点。 2 1 2j s f 生命周期 为了解决对用户处理上没有统一标准的问题,j s f 引用了请求处理生命周期, 从而提供了一套标准的处理过程,允许开发人员用流水线的方式来处理用户请 求,这种以流水线的方式来处理用户的请求的过程,被称为j s f 生命周期,如图 2 1 所示。 与j s p 相比,虽然都是建立在s e r v l e t 基础之上,但j s f 的生命周期要比j s p 天津大学硕士学位论文 第二章相关技术介绍 复杂得多1 0 1 。j s p 的生命周期非常简单,页面被执行时,h t m l 标记立即被生成 了,生命周期随即结束。而一个完整的j s f 请求处理生命周期被精心规划为6 个阶段,典型的j s f 请求需要经历所有阶段,某些特殊的请求也可以跳过一些阶 段。阶段的细分,显然引入了更多的处理,但j s f 框架会管理这一切,所以,开 发人员在获得更多控制能力的同时,工作量并没有增加。 戍完成。响应完 1 丝丝丝笪r 1 堡篓监垄堡一丝垄。垒丝: : !髭示响应 i 无查询磊 碾i 。:j ;岖 显刀:相反1 - 处理彤件h 谨瑚程密卜叫处理事件| 1 雯新梭硒值 l i o 蹩黛彰脑咝j i 墅蛸熊揍懿! 墅憋 图2 1j s f 生命周期图 一 这六个阶段是j s f 处理表单g u i 的一般次序。这个列表按照每个阶段可 能的执行次序和事件处理进行排列,但是j s f 生命周期并不是固定的,可以改 变执行的次序,跳过某些阶段或完全脱离生命周期。例如,如果一个无效的请求 值被复制到组件,那么会重新显示当前视图,并可能不执行某些阶段。还可以选 择完全脱离j s f ,比如将处理委托给一个s e r v l e t 或另一个应用程序框架。 j s f 生命周期的每个阶段的具体内容如下h : 阶段1 :恢复视图 在j s f 生命周期的第一个阶段一恢复视图中,通过f a c e s s e r v l e t 发来一 个请求。这个s c r v l c t 检查这个请求并提取出视图i d ( 视图i d 由j s p 页面的 名称决定) 。 j s f 框架控制器使用这个视图i d 为当前视图寻找组件。如果这个视图还不 存在,j s f 控制器就创建它。如果视图已经存在,j s f 控制器就使用它。视图包 含所有g u i 组件。 阶段2 :设置请求值 应用请求值阶段的目标是获取每个组件的当前状态。首先,必须从 f a c e s c o n t e x t 对象获取或创建组件,然后获取它们的值。组件值往往取自请求参 数,但是也可以取自c o o k i e 或请求头。对于许多组件,来自请求参数的值存储 在组件的s u b m i t t e d v a l u e 中。 如果组件的直接事件处理属性是t r u e ,那么值被转换为正确的类型并被检验 天津大学硕士学位论文第二章相关技术介绍 ( 在下一阶段中进一步进行转换) 。然后,将转换后的值存储在组件中。如果值 转换或值检验失败,那么生成一个错误消息并放在f a c e s c o n t e x t 中,在显示响 应阶段,这个错误消息与任何其他检验错误一起显示。 阶段3 :处理验证 转换和检验一般发生在处理检验阶段。组件转换并存储它提交的值。如果该 值转换失败,那么生成一个错误消息并放在f a c e s c o n t e x t 中,在显示响应阶段, 这个错误消息与任何其他检验错误一起显示。 在应用请求值阶段之后,发生生命周期的第一次事件处理。在这个阶段,根 据应用程序的检验规则检验每个组件的值。检验规则可以是预定义的( j s f 自带 的标准实现) ,也可以由开发人员定义。将用户输入的值与检验规则进行对比。 如果输入的值是无效的,就将一个错误消息添加到f a c e s c o n t e x t 中,并将组件 标为无效。如果一个组件被标为无效,j s f 就跳过其他阶段,进入显示响应阶段, 直接显示当前的视图和检验错误消息。如果没有发生检验错误,j s f 就进入更新 模型值阶段。 阶段4 :更新模型值 通过更新托管b e a n 的属性,更新服务器端模型的实际值。只有绑定到一个 组件的值的b e a n 属性被更新。因为这个阶段在检验之后发生,所以可以确信复 制到b e a n 属性的值是有效的。 阶段5 :调用程序 这一过程主要读取相应的a c t i o n 配置,如果存在a c t i o n ,则调用a c t i o n ,也 就是调用应用逻辑。在执行完相应的逻辑后,查询a c t i o n 是否有返回值,如果有, 则去读取下一个视图i d 。 j s f 控制器调用应用程序来处理表单提交。组件值已经通过转换、检验并应 用于模型对象,所以现在可以使用它们执行应用程序的业务逻辑。在这个阶段, 调用开发人员自己编写的动作处理方法。 在这个阶段,还为一个给定的序列或可能的多个序列指定下一个逻辑视图。 对于成功的表单提交,可以定义特定的结果并返回这个结果。例如,在得到成功 的结果时,将用户转移到下一个页面。为了让这个导航操作起作用,必须在 f a c e s c o n _ f i g x m l 文件中以导航规则的形式为成功的结果创建一个映射。发生导 航之后,就进入生命周期的最后一个阶段。j s f 获得从动作方法返回的对象并调 用它的t o s t r i n 9 0 方法。然后使用这个值作为导航规则的结果。 阶段6 :显示响应 显示视图和它的所有组件,使这些组件都处于当前状态。 8 天津大学硕士学位论文第二章相关技术介绍 2 1 3j s f 页面导航 j s f 框架与其它框架相比一个重要的优势就是它的页面导航功能。页面导航 是w e b 编程的重要组成部分。程序越复杂管理用户页面调度就越困难。j s f 通过 把页面导航信息存放在配置文件中来解决这一问题。 每个在应用配置文件中定义的导航规则都有一个源页面和一个或多个目标 页面。一个页面用它的树型标识符代表,每个可能的目标页面用导航条件代表。 开发人员需要为每一个页面指定一个导航规则,从这个页面上用户可以跳转到其 他的页面。导航规则在应用配置文件n a v i g a t i o n r u l e 元素中定义。 2 1 4j s f 框架中的各种设计模式 设计模式是对问题和解决方案进行抽象的普遍适用的方法。因为模式是所有 开发人员和架构师公认的,所以使用模式开发可以节约时间和资源。 目前用于开发w 曲应用程序的框架有5 0 多个,这说明迫切需要实现框架 的标准化,这正是j s f 框架的目标。 下面我们将分析每种模式的用途及其在j s f 框架中的作用。 l 、s i n g l e t o n 模式 s i n g l e t o n 模式的目的是保证类只有一个实例被加载,该实例提供一个全局 访问点。当启动具有j s f 支持的w e b 应用程序时,w e b 容器初始化一个 f a c e s s e r v l e t 实例。在这个阶段,f a c e s s e r v l e t 对每个w e b 应用程序实例化 a p p l i c a t i o n 和l i f e c y c l e 实例一次。这些实例就采用众所周知的s i n g l e t o n 模 式,通常只需要该类型的一个实例。 使用j s f 的w e b 应用程序只需要a p p l i c a t i o n 和l i f e c y c l e 类的一个实 例。l i f e c y c l e 管理多个j s f 请求的整个生命期。因为其状态和行为在所有请求 之间共享,这些对象采用s i n g l e t o n 模式合情合理。l i f e c y c l e 维护的 p h a s e l i s t e n e r s 也是s i n g l e t o n 模式的。p h a s e l i s t e n e r s 由所有j s f 请求共享。 2 、m o d e l - v i e w c o n t r o l l e r ( m v c ) m v c 模式的目的是从数据表示( v i e w ) 中将数据( 即m o d e l ) 分离出来。 如果应用程序有多种表示,可以仅替换视图层而重用控制器和模型代码。类似 的,如果需要改变模型,可以在很大程度上不改变视图层。控制器处理用户动作, 用户动作可能造成模型改变和视图更新。当用户请求一个j s f 页面时,请求发 送到f a c e s s e r v l e t 。f a c e s s e r v l e t 是j s f 使用的前端控制器s e r v l e t 。和其他很多 w e b 应用程序框架一样,j s f 使用m v c 模式消除视图和模型之间的耦合。为了 集中处理用户请求,控制器s e r v l e t 改变模型并将用户导航到视图。 天津大学硕士学位论文第二章相关技术介绍 f a c e s s e r v l e t 是j s f 框架中所有用户请求都要经过的控制器元素。它分析用 户请求,使用托管b e a n 对模型调用各种动作。后台( b a c k i n g ) 或托管( m a n a g e d ) b e a n 就是该模型的例子。j s f 用户界面( u i ) 组件是视图层的例子。m v c 模 式把任务分解给具有不同技能的开发人员,使这些任务能够同时进行,这样g u i 设计人员就可以使用丰富的u 组件创建j s f 页面,同时后端开发人员可以创 建托管b e a n 来编写专门的业务逻辑代码。 3 、f a c t o r ym e t h o d 模式 f a c t o r ym e t h o d 模式的目的是定义一个用于创建对象的接口,但是把对象实 例化推迟到子类中。在j s f 体系结构中,f a c t o r ym e t h o d 模式被用于创建对象。 l i f e c y c l e f a c t o r y 是一个创建和返回l i f e c y c l e 实例的工厂对象。l i f e c y c l e f a c t o r y g e t l i f e c y c l e ( s t r i n gl i f e c y c l e l d ) 方法采用f a c t o r ym e t h o d 模式,根据l i f e c y c l e l d 创建( 如果需要) 并返回l i f e c y c l e 实例。自定义的j s f 实现可以重新定义 g e t l i f e c y c l e 抽象方法来创建自定义的l i f e c y c l e 实例。 4 、s t a t e 模式 s t a t e 模式的目的是在表示状态的不同类之间分配与状态有关的逻辑。 f a c e s s e r v l e t 对l i f c y c l e 实例调用e x e c u t e 和r e n d e r 方法。l i f e c y c l e 协调不 同的p h a s e 以便执行j s f 请求。在这里j s f 实现就遵循了s t a t e 模式。如果 没有使用这种模式,l i f e c y c l e 实现就会被大量的条件( 即“妒语句) 搅得一塌 糊涂。j s f 实现为每个状态( 或阶段) 创建单独的类并调用s t e p 。 在s t a t e 模式中,l i f e c y c l e 把f a c e s c o n t e x t 对象传递给p h a s e 。每个阶段 或状态改变传递给它的上下文信息,然后设置f a c e s c o n t e x t 本身中的标志表明 下一个可能的步骤。j s f 实现在每个步骤中改变其行为。每个阶段都可以作为下 一个阶段的起因。f a c e s c o n t e x t 有两种标志r e n d e r r e s p o n s e 和r e s p o n s e c o m p l e t e 可以改变执行的顺序。每个步骤执行完成后,l i f e c y c l e 检查上一阶段是否设置 了这些标志。如果设置了r e s p o n s e c o m p l e t e ,l i f e c y c l e 则完全放弃请求的执行。 如果经过某个阶段后设置了r e n d e r r e s p o n s e 标志,j s f 就会跳过剩下的阶段而 直接进入r e n d e rr e s p o n s e 阶段。如果这两个标志都没有设置,l i f e c y c l e 就会 按顺序继续执行下一步。 5 、o b s e r v e r 模式 o b s e r v e r 模式的目的是当目标对象的状态改变时自动通知所有依赖的对象 ( 即观察器) 。j s f 在u i 组件中实现了o b s e r v e r 模式。j s f 有两类内建事件: a c t i o n e v e n t 和v a l u e c h a n g e d e v e n t 。a c t i o n e v e n t 用于确定用户界面组件( 如按 钮) 的激活。当用户单击按钮时,j s f 实现通知添加到该按钮上的一个或多个动 作监听程序。于是该按钮被激活,或者说按钮( 主体) 的状态改变了。添加到按 天津大学硕士学位论文 第二章相关技术介绍 钮上的所有监听程序( 即观察器) 都收到通知该主体状态已经改变。类似的,当 输入i j i 组件中的值改变时,j s f 实现通知v a l u e c h a n g e l i s t e n e r 。 2 1 5 转换器和验证器 j s f 内置了标准转换器和验证器,极大的减轻了开发人员的负担,如果它们 不能满足开发的实际需要,还可以自己编写符合特定要求的转换器和验证器以完 成设计目标。 1 、j s f 转换器 w e b 应用程序与浏览器之间使用h t t p 协议进行沟通,所有传送的资料基本 上都是字符串文字,而j a v a 应用程序本身是组件,所以组件资料必须经过转换才 能传送给浏览器,而浏览器送来的数据也必须转换成组件才能使用。 j s f 定义了一系列标准的转换器,用于对基本类型( 包括字符型、整型、浮点 型等) 自动进行转换,当然也可以自己编写具有特定要求的转换器实现需要的功 能。 2 、j s f 验证器 当应用程序要求使用者输入数据时,要考虑到输入的数据是否正确,因而对 数进行必要的验证。常用的验证主要有语法校验和语意校验两种。j s f 通过支持 b e a n 和验证器中的验证方法来支持数据验证。j s f 内置了3 个标准验证器, 对任何输入组件都可以注册一个或多个验证器。v a l i d a t e d o u b l e r a n g e ,它分别用 来确保组件的值可以被转换成d o u b l e 和l o n g 型值并且在指定的最小、最大值之 间。v a l i d a t e l e n g t h 用来确保组件值的长度在设定的最小、最大值之间。 2 。2h i b e r n a t e 2 2 1h i b e r n a t e 简介 h i b e r n a t e 是一个面向j a v a 环境的对象关系数据库映射工具u 引。它对j d b c 进行了轻量级的对象封装,使得j a v a 程序员可以使用对象编程思维来操纵数据 库川 1 4 j 。对象关系数据库映射( o b j e c t r e l a t i o n a lm a p p i n g ( o r m ) ) 这个术语表示一 种技术,用来把对象模型表示的对象映射到基于s q l 的关系模型数据结构中去。 h i b e r n a t e 不仅仅管理j a v a 类到数据库表的映射( 包括j a v a 数据类型到s q l 数 据类型的映射) ,还提供数据查询和获取数据的方法,可以大幅度减少开发时人 工使用s q l 和j d b c 处理数据的时间。 天津大学硕士学位论文第二章相关技术介绍 h i b e r n a t e 可以在应用e j b 的j 2 e e 架构中取代c m p ,完成数据持久化。它 还可以应用在任何使用j d b c 的场合,既可以在j a v a 的客户端程序实用,也可 以在s e r v l e t j s p 的w e b 应用中使用。 2 2 2h i b e r n a t e 体系结构 h i b e r n a t e 的体系结构概要图如图2 2 所示。 图2 - 2h i b e r n a t e 体系结构图 从图中可以看出,h i b e r n a t e 使用数据库和配置信息来为应用程序提供持久 化服务以及持久化对象。 1 、h i b e r n a t e 的工作方式 使用h i b e r n a t e 需要做的就是创建一份x m l “映射文档”,告诉h i b e r n a t e 你 所希望能够保存在数据库中的类,以及它们如何关联到该数据库中的表和列,然 后就可以要求它以对象的形式获取数据,或者把对象保存为数据。应用程序对象 中的属性以一种简单而自然的方式与正确的数据库结构相关联。 运行时,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 中有一个简单而直观的a p i ,用于对数据库所 表示的对象执行查询。要修改这些对象,( 一般情况下) 只需在程序中与它们进 行交互,然后告诉h i b e r n a t e 保存修改即可。类似地,创建新对象也很简单;只 需以常规方式创建它们,然后告诉h i b e r n a t e 有关它们的信息,这样就能在数据 库中保存它们。h i b e r n a t e 是o r m 的解决方案,其底层对数据库的操作依赖于 j d b c 。因此代码不用关心要使用的数据库种类,一旦数据库改变只需要简单地 修改h i b e r n a t e 配置文件即可。 h i b e r n a t e 从本质上来讲是一种“对象一关系型数据映射,而映射文件则是 将对象与关系型数据相关联的纽带,在h i b e r n a t e 中,映射文件通常以“h b m x m l 作为后缀。 天津大学硕士学位论文第二章相关技术介绍 2 、h i b e r n a t e 配置 h i b e r n a t e 同时支持x m l 格式的配置文件,以及传统的p r o p e r t i e s 文件配置方 式,不过现在越来越多的应用采取x m l 型配置文件方
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 素质教育学习心得体会模版
- 钢结构课程设计心得体会模版
- 保洁工作个人心得体会模版
- 三晋卓越联盟·2024-2025学年高三5月质量检测卷(25-X-635C)数学(B)
- 浙江省六校(杭州二中 温州中学 金华一中 绍兴一中 舟山中学 衢州二中)联盟2025届高三5月模拟预测卷语文试卷+答案
- 小家电安规基础知识讲义
- 初中学生家长教育孩子心得体会模版
- 凝血功能异常的临床护理
- 心梗护理方案
- 高血压活动总结模版
- 广东省广州大学附中2021-2022年初二12月大联盟物理在线考试题
- 食品工程系畜产品加工技术教案
- 入股合作的协议书(2024版)
- 广东省深圳市南山区2023-2024学年七年级下学期期末英语试题
- 福建省宁德市霞浦县2024届九年级上学期期中阶段性训练数学试卷(含答案)
- 2024年广东清远市“人才引育”工程专项事业编制高层次人才招聘31人历年【重点基础提升】模拟试题(共500题)附带答案详解
- 偏差行为、卓越一生3.0版
- 小学四年级语文知识竞赛(含答案)
- 火针治疗白癜风的效果观察与评估
- 交通运输安全风险评估
- 成语故事一箭双雕
评论
0/150
提交评论