(计算机应用技术专业论文)基于j2ee的web构件设计模式研究及应用.pdf_第1页
(计算机应用技术专业论文)基于j2ee的web构件设计模式研究及应用.pdf_第2页
(计算机应用技术专业论文)基于j2ee的web构件设计模式研究及应用.pdf_第3页
(计算机应用技术专业论文)基于j2ee的web构件设计模式研究及应用.pdf_第4页
(计算机应用技术专业论文)基于j2ee的web构件设计模式研究及应用.pdf_第5页
已阅读5页,还剩59页未读 继续免费阅读

(计算机应用技术专业论文)基于j2ee的web构件设计模式研究及应用.pdf.pdf 免费下载

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

文档简介

硕士论文 基于j 2 既的w e b 构件设计模式研究及应用 摘要 本文主要研究了j 2 e e 核心模式的表示层模式和g o f ( g a n go f f o u r ) 的一些相关设 计模式。在大型复杂w e b 应用系统开发中,w e b 构件开发的复杂度和工作量常常令 人望丽生畏。虽然j 2 e e 平台下提供了很多技术,但是如何组合这些技术解决问题, j 2 e e 并没有提供解决方案,这使得不能改变系统开发周期长、费用高以及质量不可 靠等问题设计模式提供了一种策略。本文通过对表示层模式的研究,分析了问题的 描述、解决方案和实现策略。 论文回顾了设计模式的产生、发展演变;分析了表示层中相关模式的适用语境、 解决方案和结构图,通过研究阐述了截取过滤器、前端控制器和视图助手实现的推荐 策略,对使用推荐策略的优点傲了分析,并对工作者服务和分发者视图的异同做了比 较;结合j s f 框架探讨了0 0 f 的几个模式,分析了这几种模式重点解决的问题,它 们在j s f 中的应用,对j s f 框架的作用;最后使用h i b e r n a t e 和d a o 模式解决了南京 理工大学办公室自动化统中数据存取的问题,利用g o f 的几个模式和j 2 e e 表示层的 模式,重点解决了该系统表示层的一些问题,如请求处理、客户端检验、复合视图管 理等 关键词:w e b 构件,j 2 e e 核心模式,设计模式,框架 预士论文基于j 2 髓的w e b 构件设计模式研究及应用 a b s t r a c t t h e p a p e rm a i n l ym a k e st e s 能r c ho f r e p r e s e n t a t i o n i nj 2 e ec o r ep a t t e r n sa n d af e wr e l a t i v ep a t t e m si ng o f ( g a n go ff o u r ) t h ed e v e l o p m e n to fw e bc o m p o n e n ti na l a r g ea n dc o m p l e xw e bs y s t e md e v e l o p m e n ti sc o m p l e xa n dn e e ( l gal o to fw o r kt od o a l t h o u g hj 2 e ep l a t f o r mp r o v i d e sm a n yt e c h n o l o g i e s , i td o e s n tt e l lh o wt oo r g a n i z et h e s e t e c h n o l o g i e st or e s o l v ep r o b l e m sa n dh o wt or e s o l v et h ep r o b l e m so 丘蛆t ob em e ti n s y s t e md e v e l o p m e n t t h e s ef l a w sb r i n gas e r i e so f p r o b l e m s ,s u c ha sp e r i o dl o n g , f e eh i g h a n dq u a l i t yu n r e l i a b l e d e s i g np a t t e r n sp r o v i d eas t r a t e g y t h ep a p e rg i v e sp r o b l e a n d e s c r i p t i o n ,s o l u t i o na n dr e a l i :z e ds t r a t e g y t h ep a p e rt ! e i e w s n a i a s a n e 七,d e v e l o p m e n ta n de v o l v e m e n to fd e s i g np a t t e m s i t a n a l y z e ss u i t a b l ec o n t e x to fr e p r e s e n t a t i o np a t t e r n s ,s o l u t i o na n dr e l a t i v eu m ls t r u c t u r e d i a g r a m t h r o u g hr e s e a r c h , t h ep a p 口g i v e sp r o p o s e ds w a t e g i e so fi n t e r c e p t i n gf i l t e r , f l o n t c o n t r o l l e ra n dv i e wh e l p e rt ob er e a l i z e d , i n t r o d u c e sb e n e f i t st ou s et h e s es t r a t e g i e sa n d m a k e sa c o m p a r eb e t w e e n “r 、,i c et ow o r k e r a n d “d i s p a t c h 髓v i e w 蚰c o m b i n e dw i t hj s f f x a m e w o l k ,i td i s c u s s e saf e wp a t t e r n so f g o fa n da n a l y s e st h e i rc o n t e x ta n di m p o m n c ct o j s ff i a m e w o r k a tl a s ta p p l y i n gh i b e r n a t ea n dd a op a t t e r nr e s o l v e sd a t a b a s ea c c e s s i n gi n n u s tq 九a n dw i t haf e wp a u e m so fg o fa n dp r e s e n t a t i o np a t t e r n si tr e s o l v e saf e w p r o b l e m si np r e s e n t a t i o nt i e r , s u c h 舔r e q u e s th a n d l i n g , c l i e n ta u t h e n t i c a t i o na n dc o m p o s i t e v i e wm a n a g e m e n t k e y w o r d s :w e bc o m p o n e n t , j 2 e ec o r ep a t t e r n s ,d e s i g np a t t e m s ,f r a m e w o r k 声明 本学位论文是我在导师的指导下取得的研究成果,尽我所知,在 本学位论文中,除了加以标注和致谢的部分外,不包含其他人已经发 表或公布过的研究成果,也不包含我为获得任何教育机构的学位或学 历而使用过的材料。与我一同工作的同事对本学位论文做出的贡献均 已在论文中作了明确的说明。 2 卯多年6 月i 7 日 学位论文使用授权声明 南京理工大学有权保存本学位论文的电子和纸质文档,可以借阅 或上网公布本学位论文的部分或全部内容,可以向有关部门或机构送 交并授权其保存、借阅或上网公布本学位论文的部分或全部内容。对 于保密论文,按保密的有关规定和程序处理。 研究生签名:丞丝堡:功g 年月 日 硕士论文基于j 2 匝的w e b 构件设计模式研究及应用 1 绪论 1 1 研究背景 随着计算机网络和软件技术的迅速发展,w e b 系统己成为跨平台分布式计算的主 流。在大型复杂w e b 应用系统中,w e b 构件开发常常令人头疼不已嗍 基于构件的开发( c o m p o n e n t - b a s e dd e v e l o p m e n t ,简称c b d ) 或基于构件的软 件工程( c o m p o n e n t b a s e ds o r w a me n g i n c c r i n g ,简称c b s e ) 是一种软件开发新范 型,它是在一定构件模型的支持下,复用构件库中的一个或多个软件构件,通过组合 手段高效率、高质量地构造应用软件系统的过程嘲。“软件构件化”,真正实现了软件 复用和构件化生产,极大节约了软件产品的开发时间和开发成本旧 构件在w e b 系统的应用,加速了w e b 系统的开发速度,提高了w e b 系统的健壮 性和灵活性等,为软件开发提供了一个全新的视角和概念嗍因此世界各大软件公司 和机构纷纷推出了各自的基于构件的w e b 应用系统开发技术和相应的开发平台,以 降低w e b 应用系统开发的难度,加速其开发的过程,提高所开发系统的质量。其中, s u n 公司的j a v a2e n t e r p r i s ee d i t i o n ( j 2 e e ,企业j a v a 2 开发平台) 是较优秀的开发平台, j 2 e e 开发平台可以保留现有的r r 资产,系统的开发不是全部重新开发,而是利用己 有的企业信息系统方面的投资,以渐进的方式建立在已有系统之上;j 2 e e 采用中间 件开发,把一些通用的、繁琐的服务端任务交给中间件供应商去完成,开发人员可以 把精力投在创建业务逻辑上,相应地缩短了开发时间。j 2 e e 服务器平台具有极佳的 可伸缩性,j 2 e e 平台的应用程序可被部署到各种操作系统上,允许多台服务器集成 部署,能消除系统中的瓶颈,实现可高度伸缩的系统,满足未来商业应用的需要。j 2 e e 的这些特性完全符合企业应用系统的需要阄。 但是,利用j 2 e e 来开发w e b 应用系统还是面临着许多问题【4 】首先,j 2 e e 技术 是近年来的新技术,人们对j 2 e e 还没有完全领会,对于开发过程中所遇到的困难缺 乏处理经验和必要的指导;其次,j 2 e e 只提供了一些系统开发的技术,开发人员对 如何利用这些技术来设计w e b 应用系统常常会感到不知所措,以往成功的系统设计 的结果无法有效地复用,不能有效改变系统开发周期长、费用高以及质量不可靠等问 题,严重影响着利用j 2 e e 开发w e b 应用系统的速度和质量 解决w e b 应用系统开发的问题是有效的借鉴以往的系统开发经验,迅速地解决 系统开发所存在的问题,就能够迅速提高系统开发质量和速度。设计模式的研究正是 对软件开发经验的归纳和总结,将一些的成功的项目开发经验进行整理。方便开发人 员的借鉴。如果在w e b 应用系统开发中有针对性地应用设计模式,系统开发所存在 的问题( 如开发速度慢,质量低,可重用性差等) 就可以得到较好的解决。 硕士论文基于j 2 旺的w e b 构件设计模式研究及应用 1 2 论文主要研究工作 在大型复杂w e b 应用系统开发中,w e b 构件开发的复杂度和工作量常常令人望 而生畏。本论文主要对w e b 构件设计模式做了如下工作: ( 1 ) 研究了j 2 e e 核心模式下的表示层模式,阐述了截取过滤器模式、前端控制 器模式和视图助手模式的问题域、解决方案、推荐策略和结构图,比较了工作者服务 和分发者视图的异同; ( 2 ) 结合j s f 中设计模式的应用探讨了g o f ( g a n go f f o u r ) 的几个相关模式,阐 述了这些模式适用的问题域,分析了使用这些模式解决该问题的优点和不足。并给出 了实现各个模式的一般设计方法: ( 3 ) 分析w e b 构件开发中的问题,即如何创建结构合理的瘦客户端、组合正确 的外观和行为、分离表示逻辑和业务逻辑、创建易于阅读和易于维护的代码以及用户 验证、数据加密、会话管理、用户个性化和请求处理等; ( 4 ) 设计系统采用的框架。本系统采用了非分布式的多层结构:客户端、表示 层、业务逻辑层、数据持久层和数据库 把以上的研究工作应用在南京理工大学办公室自动化系统中,使用h i b e r n a t e 和 d a o 模式实现了对数据库的存取访问,把g o f 的几个设计模式和j 2 e e 表示层的模式 组合应用解决了视图管理、客户端检验和请求处理、字符编码等问题。 1 3 论文的组织安捧 论文共分六章: 第一章:绪论。介绍了论文的研究背景、主要的研究工作和论文的组织安排。 第二章:j 2 e e 表示层模式研究。介绍了设计模式的演变及一些相关概念,探讨 了j 2 e e 表示层的相关模式。 第三章:j s f 框架中设计模式的探讨探讨了g o f 模式中的一些相关模式,分析 了这些模式应用的问题域,阐述了模式实现的一般方法 第四章:描述了系统的功能、框架设计以及各层采用的技术,并给出了系统在持 久层的实现方法和步骤 第五章:w e b 构件设计模式的应用。结合具体例子,说明如何使用表示层模式解 决w e b 构件开发中遇到的一系列的问题,如客户端检验、复合视图管理、字符编码 等。 第六章:总结和展望。 2 硕士论文基于j 2 匝的| e b 构件设计模式研究及应用 2 j 2 e e 表示层模式研究 设计模式是软件开发期间对重复问题的可复用解决方案,可以帮助进行软件设计 和更好地设计软件。一般来说,设计模式可以帮助我们解决应用程序设计阶段遇到的 大多数常见问题,包括【4 】:标识构件、构件内部结构及构件之间的关系;确定构件粒 度及适当交互;定义构件接口 2 1 设计模式的演变 软件模式涉及软件工程的各个方面,发展出很多不同类型,如分析模式、过程模 式等。其中,最重要也是应用最广泛的是设计模式。同时,与软件模式相对地出现了 软件反模式。 设计模式是软件开发期间对重复问题的可复用解决方案。模式是从经验中总结出 来的,基于经过证实的方案。模式只有在实际系统中多次得到验证之后才能成为模式。 模式一方面促进复用,一方面又防止重复劳动,最终使我们能更快更高效地工作同 时,模式还增强了表达能力,改进了构架师与设计人员之间的通信,使我们可以按前 所未有的方式考虑常见结构性方案。模式鼓励通过结合解决较大的问题。 设计模式提供了一种共享经验的方式f 4 】,可以使团体受益和避免不断的重复发 明。设计模式通常捕捉问题的描述、问题的语境、推荐的问题解决方案以及使用解决 方案后可以预见到的结果。为了具有最广泛的适用性( 从而对更多的读者有用) ,设 计模式通常从取决于环境的精确细节中抽象而来。这种抽象性产生了一些把设计模式 应用到现有的案例中所必需的译码这是一个重要细节:尽管设计模式是共享专业知 识的好方法,但通常它对正确应用专业知识是非常重要的。 设计模式这个概念最初产生于建筑行业。一位名为c h r i s t o p h e r a l e x a n d e r 的建筑 师编著了一些带有创新思想的书籍,描述了建筑结构和城市规划方的模式【l 】: ( 1 ) a p a t t e r nl a n g u a g e :t o w n s ,b u i l d i n g s ,c 碰舾删( o x f o r du n i v e r s i t yp r e s s , 1 9 7 7 ) ( 2 ) w r h et i m e l e s sw a yo f b 词d i n g ( o x f o r du n i v e r s i t yp r e s s ,1 9 7 9 ) 这些书中介绍的一些想法不仅适用于建筑领域,而且适用于许多其他领域,包括 软件领域 设计模式在8 0 年代后期从建筑业进入计算机系统领域。1 9 8 7 年,w a r d c u n n i n g h a m 和k e n tb e c k 采用a l e x a n d e r 的一些想法开发了五种用户界面设计模式 他们在o o p s l a ( o b j e c t - o r i e n t e dp r o g r a m m i n g , s y s t e m s , l a n g u a g e s , a n da p p l i c a t i o n s ) - 8 9 上发表了一篇有关u i 模式的论文,:g 为 u s i n g p a t t e r n l a n g u a g e f o r o b j e c t - o r i e n t e d p r o g r a m s “1 1 1 1 9 9 0 年初,e r i c hg a m m a 、r i c h a r dh e l m 、j o l mv l i s s i d 和r a l p hj o h n s o n 等四位 3 硕士论文 基于j 2 髓的w e b 构件设计模式研究及应用 作者开始编写一本名为 d e s i g np a t t e r n s 的书,该书于1 9 9 4 年出版,是第一次将设计 模式提升到理论高度,并将之规范化,成为近l o 年内最有影响的计算机书籍之一 书中普及了模式的概念通常称该书为 g a n go f f o u r 或 g o w l l j 1 9 9 4 年开始由h i l l s i d eg r o u p ( k e n tb e c k 等发起成立) 和o o p s l a 联合发起了 国际p l o p ( p a t t e r nl a n g u a g eo fp r o g r a m m i n g ) 会议,如今模式( p a t t e r n ) 已成为软 件工程领域内的一个热门话题,其在计算机领域的影响超过了在建筑界的影响。 随着设计模式逐渐普及,它们所涉及的领域就像 b e na n dj e r r y 效应那样也逐渐 广泛起来除了源于g o f 的著作中的o o 设计模式外,现在还包括了专为开发语言、 应用服务器、企业集成等提供的设计模式,如j 2 e e 设计模式。 j 2 e e 是s u n 推出的一个多层框架平台,形成了一个面向企业级的分布式、多层 次的软件体系结构规范,成为企业应用开发的标准。j 2 e e 平台设计模式解决使用j 2 e e 服务与技术的常见设计问题。 通用模式、域、语言、特定平台特定模式之间的相互关系 4 1 : 图2 1 1 模式之间关系图 2 2 构架、框架和设计模式的关系 软件体系结构通常被称为架构。指可以预制和可重构的软件框架结构。架构尚处 在发展期,对于其定义,学术界尚未形成一个统一的意见,而不同角度的视点会造成 对软件体系结构的不同理解,以下是一些主流的标准观点嗍: ( 1 ) a n s i i e e e6 1 0 1 2 - 1 9 9 0 软件工程标准词汇对于体系结构定义是:“体系架 构是以构件、构件之间的关系、构件与环境之间的关系为内容的某一系统的基本组织 结构以及知道上述内容设计与演化的原理( p r i n c i p l e ) “。 ( 2 ) g a r l a n & s h a w 模型的基本思想是:软件体系结构= 构件( c o m p o n e n t ) ,连 接件( c o n n e c t o r ) ,约束( c o n s t r a i n ) 设计模式中对框架的定义是框架就是一组相互协作的类,对于特定的一类软 件,框架构成了一种可重用的设计1 4 7 1 硕士论文 基于j 2 醯的w e b 构件设计模式研究及应用 软件框架是项目软件开发过程中提取特定领域软件的共性部分形成的体系结构, 不同领域的软件项目有着不同的框架类型。框架的作用在于:由于提取了特定领域软 件的共性部分,因此在此领域内新项目的开发过程中代码不需要从头编写,只需要在 框架的基础上进行一些开发和调整便可满足要求;对于开发过程而言,这样做会提高 软件的质量,降低成本,缩短开发时间,使开发越做越轻松效益越做越好,形成一 种良性循环【4 7 j 2 2 i 框架和架构之同的关系 框架不是构架( 即软件体系机构) 构架确定了系统整体结构、层次划分和不同 部分之间的协作等。框架比架构更具体,更偏重于技术确定框架后,软件体系结构 也随之确定,而对于同一软件体系结构( 比如w 曲开发中的m v c ) ,可以通过多种 框架来实现 4 7 1 2 2 工框架与设计模式之间的关系 设计模式和框架在软件设计中是两个不同的研究领域。设计模式研究的是一个设 计问题的解决方法,一个模式可应用于不同的框架和被不同的语言所实现;而框架则 是一个应用的体系结构,是一种或多种设计模式和代码的混合体。虽然它们有所不同, 但却共同致力于使人们的设计可以被重用,在思想上存在着统一性的特点,因而设计 模式的思想可以在框架设计中进行应用 框架和设计模式存在着显著的区别,主要表现在二者提供的内容和致力应用的颁 域 d r : ( 1 ) 从应用领域上分,框架给出的是整个应用的体系结构;而设计模式则给出 了单一设计问题的解决方案,并且这个方案可在不同的应用程序或者框架中进行应 用。 ( 2 ) 从内容上分,设计模式仅是一个单纯的设计,这个设计可被不同语言以不 同方式来实现;而框架则是设计和代码的一个混合体,编程者可以用各种方式对框架 进行扩展,进而形成完整的不同的应用。 ( 3 ) 以第二条为基础,可以得出设计模式比框架更容易移植框架一旦设计成 形,虽然还没有构成完整的一个应用,但是以其为基础进行应用的开发显然要受制于 框架的实现环境;而设计模式是与语言无关的,所以可以在更广泛的异构环境中进行 应用。 总之,框架是软件,而设计模式是软件的知识体,提升框架的设计水平 硕士论文基于j 2 匝的y e b 构件设计模式研究及应用 2 3 g o f ( g a n go f f o u r ) 模式 2 3 1 g o f 模式的分类 设计模式在粒度和抽象层次上各不相同,根据目的区分,即模式是用来完成什么 工作的,可把模式分为创建型( c r e a t i o n a l ) 、结构型( s t r u c u m d ) 和行为型( b e h a v i o r a l ) 三种,分别从对象的创建、对象和对象间的结构组合以及对象问的交互这三个方面为 面向对象系统建模方法给予了解析和指导 其中创建型设计模式描述怎样创建一个对象它隐藏对象创建的细节,使程序代 码不依赖具体的对象,这样当增加一个新的对象时几乎不需要修改代码创建型模式 包括:抽象工厂、生成器、工厂方法,原型和单件。结构型设计模式描述类和对象之 间怎么组织起来形成大的结构,主要使用继承来组织接口或实现。结构型模式包括; 适配器、桥接、组成、装饰、外观、享元和代理。行为型设计模式描述算法以及对象 之问的任务分配,它所描述的不仅仅是对象或类的设计模式,还有它们之间的通讯 模式行为型模式包括:职责链、命令、解释器、迭代器、中介者、备忘录、观察 者、状态、策略、模板方法和访问者每一个设计模式都系统地命名、解释和评价了 面向对象系统中的一个重要的和重复出现的设计 4 9 1 这样,我们只要搞清楚这些设计模式,就可以完全或者说很大程度上吸收了那些 蕴含在模式中的宝贵的经验,对面向对象的系统能够有更为完善的了解更为重要的 是,这些模式都可以直接用来指导面向对象系统中至关重要的对象建模问题。如果有 相同的问题背景,则可以直接套用这些模式。这样可以省去很多的工作嗍。 2 3 2 g o f 模式的重要性 o o f 探讨了面向对象程序设计中常用的设计模式,把它们分类整理,定义出2 3 个模式虽然没有提出任何前所未有的新算法或者新程序设计技术,但恰恰是设计模 式分类整理的重要性为使用的各种技术提供了标准的名称和定义;如果不加研 究,就无法对现有模式进行改进,更难以提出新的设计模式一标志着一场把软件从 业人员专门知识和技能加以文档化运动的开始。设计模式对软件开发产生了深刻的影 响,主要有以下几个方面【2 】: ( 1 ) 一套通用的设计词汇 设计模式为设计者们交流讨论、书写文档以及探索各种不同设计提供了一套通用 的设计词汇,使你可以在比设计表示或编程语言更高的抽象级别上谈论一个系统,从 而降低其复杂度,提高你的设计及与同事讨论这些设计的层次 ( 2 ) 书写文档和学习的辅助手段 规模较大的面向对象系统都使用了这些设计模式由于未能理锯g o f 的设计模 6 硕士论文 基于j 2 趣的w e b 构件设计模式研究及应用 式,常常会对系统中的继承的使用感到费解以及难于理解控制流程。因此,g o f 设计 模式有助于你理解已有的面向对象系统,提高你的设计水平,同时按照一个系统所使 用的设计模式来描述该系统可以使他人理解起来容易得多 ( 3 ) 现有设计方法的一种补充 面向对象设计方法可用来促进良好的设计。它描述一个设计中出现的问题,如何 解决这些问题,以及如何评估一个设计,但不能描述设计专家的经验。设计模式是面 向对象设计方法所缺少的一块内容。设计模式展示了如何使用诸如对象、继承和多态 等基本技术,也展示了如何以算法、行为、状态或者需生成的对象类型来将一个系统 参数化。设计模式使你可以更多地描述“为什么“这样设计而不仅仅记录你的设计结 果。 一个成熟的设计方法不仅要有设计模式,还可有其他类型的模式,如分析模式, 用户界面设计模式,或者性能调节模式等等但是设计模式是最主要的部分,这在以 前却被忽略了 ( 4 ) 重构的目标 开发可复用软件的一个问题是开发者常常不得不重新组织或重构软件系统。设计 模式可以帮助重新组织一个设计,同时还能减少以后的重构工作。 设计模式记录了许多重构产生的设计结构。在设计初期使用这些模式可以防止以 后的重构。不过即使是在系统建成以后才了解如何使用这些模式,它们仍可以教你如 何修改你的系统。设计模式为你的重构提供了目标。 2 4 j 2 e e 模式 2 41j 2 e e 平台概述 j 2 e e 是成长最快的技术应用框架,全球绝大多数的新应用是由j 2 e e 分布式应用 体系制成的。 j 2 e e 是企业级计算平台,它为基于分布式的和基于构件的软件开发提供一个“操 作系统”,j 2 e e 规范定义了新型分布式应用程序体系结构,解决了n 层应用程序开发 的许多问题f 4 研 j 2 e e 本身是一个很好的技术,j 2 e e 体系结构提供中间层集成框架,用来满足没 有太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求通过提供统一 的开发平台,j 2 e e 降低了开发多层应用的费用和复杂性,同时提供对现有应用程序 集成的强力支持h 明。 同时,j 2 e e 也是一种技术规范,它给开发人员提供了一种工作平台,定义了整 个标准的应用开发体系结构和部署环境在这个体系结构中,应用开发者的注意力集 中在封装商业逻辑和商业规则上,一切与基础结构服务相关的问题以及低层分配问题 硕士论文 基于j 2 髓的w e b 构件设计模式研究及应用 都由应用程序容器或者服务器来处理。这样,j 2 e e 应用程序开发人员可以集中考虑 应用程序的逻辑和相关的服务,而把所有基础结构相关的服务交由运行环境实现【柚1 j 2 e e 的提出基于以下基本思想:基于标准协议、共享公共服务、软件构件化【稿1 ( 1 ) 基于标准协议 j 2 e e 各种应用程序和构件要进行通信,这就必须要有一种通信的机制,j 2 e e 把 这种通信机制建立在标准协议的基础上这些协议有因特网协议( h r 即、t c p i p 、 s s l ) 和远程对象协议( r m i 瓜h n u o p 、j a v a l d l ) 。 ( 2 ) 共享公共服务 应用程序的构件运行在容器里,构件的生命周期由容器来管理。但是,应用程序 还是要调用一些其他的服务,在j 2 e e 平台下把这些服务集成在一起或者提供统一的 a p i 进行调用。如:j a x p - x m l p a r s i n g a p i 、n 低等 ( 3 ) 软件构件化 j 2 e e 主要使用了三个构件模型:j s p 、s e r v l e t 和e j b 小服务( s e r v l e t ) :既服务器端小程序,提供了过滤器的实现,提出了一个轻量 级的架构来实现请求响应的传送s e r v l e t 提供了一种扩充w e b 服务器,使之能够在 h t l v l l 、3 2 v l l 或者其他w e b 语言中实现动态内容功能。 j g p :它建立在h t t p s e r v l e t 技术基础上,用它来处理h t t p 请求响应,j s p 提供了 比s e r v l e t 更为方便的编程结构j s p 网页可以包含i - i t i v l l 、j a v a 代码和j a v a b e a n 构 件,提供了更为强大的动态页面汇编机制,可以利用j a v a 平台的许多优势 e j b :e j b 体系结构是分布式构件模型,它是包含了业务逻辑的可复用软件单元。 e j b 允许把应用程序逻辑和系统级服务分开,使得开发人员可以集中考虑业务问题, 而不必考虑系统方面的编程。它用于开发安全、可扩展的、事务型的分布式构件 j a v a b e a n s 构件模型是j a v a 成功的构件模型e j b 是在j a v a b e a n s 构件模型的基础上 扩展的一种用于支持服务器构件。f _ 2 b 有三种类型:会话b e a n 、实体b e a n 和消息驱 动b e a n j 2 e e 为企业级应用提供的支持包括:表示层、业务层和资源层。 2 4 2j 2 e e 与设计模式 j 2 e e 提供了大量开发企业应用程序的技术要使用j 2 e e ,就要学习所有标准 j 2 e e 技术,还要学习各种扩展技术,这并不容易,但仅仅学习这些技术还不足以在 j 2 e e 中能设计良好的应用程序,因为这些技术只是回答了提供解决问题的一种工具, 而没有回答何时使用和怎样使用学习这些技术也不同于在j 2 e e 中学习设计应用程 序。设计应用程序时,需要确定技术和体系结构【4 】 虽然j 2 e e 从高层抽象基础技术,但我们仍然要建模和设计方案,利用这些技术。 暑 硕士论文基于j 2 既的- e b 构件设计模式研究及应用 j 2 e e 设计人员、架构师和开发人员要寻找上述问题的解决答案,实际中可能更具体, 例如:特定任务最适合那种企业b e a n ;如何充分利用容器管理事务、持久性和安全 性;是否每次查找构件或存储引用;把会话数据存放在那里;用j s p 还是小服务:是 否分别处理内容和表示;谁负责数据验证;如何定义实体b e a n 之间的有效关系;如 何减少远程方法调用;层之间要发送多少数据;如何集成现有应用程序等等。 这些问题几乎时时刻刻都要涉及到j 2 e e 设计模式对这些问题做出回答j 2 e e 平台设计模式解决使用j 2 e e 服务与技术的常见设计问题,包括【4 l : ( 1 ) 视图管理; ( 2 ) 请求处理; ( 3 ) 服务定位与激活; ( 4 ) 远程通信与层间通信; ( 5 ) 构件选择; ( 6 ) 持久状态、事务与安全性管; ( 7 ) e i s 集成等。 j 2 e e 应用程序是由构件组成的,放在客户层、w e b 构件层和业务逻辑j b ) 层。 j a v a 语言开发的构件采用面向对象方法设计这类应用程序时,架构师要面对不同问 题:如何标识构件、选择构件类型和标识构件的内部结构( 如作为组建建筑块的对象) 确定正确的抽象层、粒度与灵活性是件困难的事情,需要有足够的经验。 这时软件开发方法不一定能帮上忙。尽管可以用不同方法标识与分析模型对象, 但通常不是显式地针对设计模型构件与对象的。实际开发还显示,应用程序中的构件 不一定直接模拟实际对象,但分析模型中通常根据实际对象定义对象 因此,要选择j 2 e e 提供的适当构件类型并不容易,特别是在选择不明显时,有 时还要考虑性能与安全要求。w e b 构件也是这样,可能要选择j s p ( j a v as e r v e rp a g e ) 或小服务,以及业务逻辑层构件,首先要选择不同类型的f _ j b ( 无状态会话、状态会 话、实体和消息驱动b e 缸) 以及选择c o r b a 与r m i - i i o p ( 远程方法调用互联网内 部对象请求代理协议) 分布式对象和j m s 这个决策会产生长远的影响。 采用设计模式时,可以得到这些决策的准则。可以帮助: ( 1 ) 进行适当抽象; ( 2 ) 进行适当一般化: ( 3 ) 确定支持复用的适当粒度; ( 4 ) 提高设计灵活性、更好地适应将来的改变。 这里,粒度起着重要作用。选择构件的适当粒度可以规定所需的通信量,这在分 布式应用程序中特别重要( j 2 e e 应用程序是分布式应用程序) 。选择构件的适当粒度 可以使应用程序性能更好。 9 硕士论文 基于j 2 旺的w e b 构件设计模式研究及应用 粒度选择反映在构件接口中。j 2 e e 是个分布式平台,严格遵照接口与实现分开 的概念,减少客户机与构件之间的依赖性,从而提高灵活性客户机只依赖于接口, 因此不知道构件实现的改变。这样就可以改变构件实现而不影响客户机。这个概念对 分布式和集成非常重要。 但是,要得到这些好处,就不能改变接口这就要求尽力设计接口,保证近期内 不会发生改变设计模式可以定义具有适当粒度与签名的接口。 设计模式还可以提供视图管理体系结构,帮助设计灵活的表示层构件,适应将来 8 修改和集中执行特定工作,如用户验证、授权和个性化,还可以分开请求处理与视 图生成,从而进一步增加灵活性。 设计模式还可以促进复用软件开发中的复用已经有很长的历史,从简单源代码 复用进化到表示问题抽象的结构复用,以及标识问题解决思路的结构复用。模式就是 复用思想,是已被证明的成功的方法,是思想复用的催化剂。设计模式还可以帮助我 们使设计更适合低级复用,复用构件与对象从这个意义上说,模式也许是最成功的 复用形式之一闭 最后,设计模式还可以提高设计灵活性,更好地适应将来的改变。软件开发中的 需求是迅速变化的。好的软件设计可以预期这些改变,但要求根据领域中不易发生改 变的项目进行设计,要求从开始就预见将来可能的改变。这样可以大大减少重新设计 总之,j 2 e e 模式简便了j 2 e e 应用程序的开发,使程序更加健壮、易扩展、复用 性强,提高了j 2 e e 程序的开发效率和质量。 2 43j 2 e e 核心模式与t h e s e r v e r s i d e 模式 j 2 e e 模式主要来自s u n j a v a c e n t e r 模式和t h e s e r v e r s i d e 模式,为了更好地了解 这两个模式间的组织、关系和依赖性,用下图表示它们白灰色阴影框表示s u n j a v a c e n t e r 模式类别中的模式,深灰色阴影框表示t h e s e r v e r s i d e 类别中的模式 1 0 硕士论文 基于j 2 髓的w e b 构件设计模式研究及应用 2 4 3 i j 2 e e 核心模式与t h e s e r v e r s i d e 模式关系图【4 】 s u nj a v ac e n t e r 模式类别中的十五个模式与t h e s e r v e r s i d e 类别中的十七个模式 是相联系的,有些模式是相似的,提供同一问题的相似解决方案。有下列相似性: ( 1 ) s e r v i c et ow o r k e r 与d i s p a t c h e rv i c w ; ( 2 ) s e s s i o nf a c a d e 、m e s s a g ef a c a d e 与e j bc o m m a n d ; ( 3 ) s e r v i c el o c a t o r 与e i bh o m ef a c t o r y ; ( 4 ) v a l u e0 b j e c t 与d a t at r a n s f e r0 巧e c t 及其所有变形;d o m a i nd a t a - t r a n s f e r o b j e c t 、c u s t o md a t a - t r a n s f e ro b j e c t 、d a t a - t r a n s f e rh a s h m a p 和d a t a - t r a n s f e rr o w s e t ; ( 5 ) v a l u e o b j e c t a s s e m b l e r 与d a t a - t r a n s f e r o b j , e t f a c t o r y ) ( 6 ) d a t a - a c 4 s so b j e c t 与d a t a - a c c e s sc o m m a n db e a n 2 5 j 2 e e 表示层模式 由于本文主要探讨j 2 e e 核心模式的表示层模式,从本节开始分析表示层中的相 i i 硕士论文基于3 2 e e 的f e b 构件设计幞式研究及应用 关模式,主要讨论了截取过滤器、前端控制器、视图助手和工作者服务 设计w e b 应用程序的一个重要之处是创建结构合理的整洁的瘦客户端,难点在 于组合正确的外观和行为,同时包装表示逻辑,不把任何业务逻辑放到这一层中,并 创建易于阅读和易于维护的代码此外,表示层通常还有其他要求,如用户验证、数 据加密、会话管理、用户个性化和请求处理等这些在w e b 开发中经常遇到的问题, 在j 2 e e 的表示层设计模式中给出了答案 下面的内容从问题描述、解决方案和推荐策略三个方面对表示层设计模式进行了 详细的分析和讨论。 2 5 1 截取过滤器 2 5 1 1 问题描述 表示层请求处理机制可以接受许多不同类型的请求,这些请求需要不同的处理, 一般需要预处理和后处理客户端w e b 请求和应答 当请求进入w e b 应用程序时,通常在主处理阶段前必须通过几个前期测试,如: 客户端是否已经被验证;客户端是否有正确的会话;客户端的m 是否来自一个可信 网络;客户端使用何种编码发送数据等。这些测试的答案有的是决定处理是否可以进 行的,有些澳8 试会处理进来的数据流,以使之成为一种适合于处理的形式 典型的解决方案包括一系列条件检验,任何否定的检验结构都会放弃该请求嵌 套的i f e l s e 语句是一种标准的策略,但是这种解决方案会导致编码脆弱和拷贝粘贴 的编程方式,原因是过滤流和过滤器的动作已被编译进应用程序。 以灵活和正确的方式解决该问题的关键是拥有一种添加和删除构件的简单机制, 其中每个构件负责完成一个特定的过滤动作 下面的推荐策略,给出一种基于s c r v l e t 2 3 提供的标准过滤器的解决方案。 2 5 1 2 解决方案 2 5 i 2 i 截取过滤器模式结构匿l 3 j 硕士论文 基于j 2 髓的w e b 构件设计模式研究及应用 其中过滤管理器管理着过滤处理,使用合适的过滤器,按照正确顺序来创建过滤 器链,同时初始化处理过程;过滤器链是独立过滤器的有序集合;过滤器l 、过滤器 2 、过滤器3 时被映射到某目标的单独过滤器,过滤器链会协调这些过滤器的处理: 目标即为客户端请求的资源。 2 5 1 3 推荐策略 使用s e r v l e t 过滤器s e r v l e t 过滤器是在j a v as e r v l e t 规范2 3 中定义的,它是基 于接口创建的,通过修改w e b 应用的部署描述符可以被公开地添加或者删除。 它能够对s e r v l e t 容器的请求和响应对象进行检查和修改。s e r v l e t 过滤器本身并 不提供生成请求和响应对象,它只提供过滤作用s e r v l e t 过滤器能够在s e r v l e t 被调 用之前检查r e q u e s t 对象,修改r e q u e s th e a d e r 和r e q u e s t 内容;在s e r v l e t 被调用之 后检查r e s p o n s e 对象,修改r e s p o n s eh e a d e r 和r e s p o n s e 内容它负责过滤的w e b 构件可以是s e r v l e t 、j s p 或h t m l 文件。它具有如下特点: ( 1 ) s e r v l e t 过滤器可以检查和修改s e r v l e t r e q u e s t 和s e r v l e t r e s p s o n s e 对象; ( 2 ) 可以指定s e r v l e t 过滤器和特定的u r l 关联,只有当客户请求访问此u l 也 时,才会触发过滤器工作; 1 3 ) 独立的s e r v l e t 过滤器可以被串联在一起,形成管道效应,协同修改请求和 响应对象 具体步骤可以实现j a v a x s e r v i a f i l t e r 接口,然后在w e b x m l 文件中配置 2 5 2 前端控制器 2 5 2 1 问题描述 i 系统需要表示层请求处理的集中式访问点以支持系统服务的集成、内容检索、视 图管理以及导航。当不通过集中式机制直接访问视图时,可能会产生两个问题: ( 1 ) 每个视图被要求提供自己的系统服务,通常会导致代码重复; ( 2 ) 把视图导航留给视图处理会导致混合视图内容和视图导航 除此之外,分布式控制更难维护,因为更改经常需要在多个地方实施。因此,这 个模式通常应用于如下问题域中: ( 1 ) 每个请求都要完成常见的系统服务处理,如安全服务会完成验证和授权检 验; ( 2 ) 最适合在一个地方处理的逻辑却在多个视图中重复放置

温馨提示

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

评论

0/150

提交评论