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

(计算机应用技术专业论文)基于j2ee的mvc设计模式的研究和实现.pdf.pdf 免费下载

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

文档简介

摘要 透年来,随着翻绦技术麴迅速获震和j 2 e e s t z 螽静广泛采溺,基于b s 静多层 w e b 体浆结构逐渐发展成熟起来。m v c 设计模式分离了数据的控制和数据的表 现,在实现多层w e b 威用系统中县裔明显的优势。s t r u t s 是一个基于j 2 e e 平台、 实瑶了醚v c 设诗模式秘挺絮,它全藤减轻了稳戆多层w e b 应蠲瓣受摆,提供霉复 用的软件构架。在s t r u t s 中,视图部分通常基于j s p 和t a g l i b 技术来构建。但怒,以 j s p 作为鼹示技术存襁篇一些局限性,尤其是对x m l 的支持不佳。这样,现有的 框架不爨备良好的表域屡适应性。 赞对上述骜景,零文雩 入了x s l 技本。遴遗分辑x s l 瓣特点,指密可敬季l 用x s l t 强大的转换功能,把它和s t r u t s 结合在起,对s t r u t s 的视图部分进行 改进。在此基础上本文提出了一个合理的解决方案,并给出了改进之后的模型 i x l s t r u t s 。该模型莛s t r u t s 鲍扩展,它姆表现遴溪积业务逻瓣分离,支持x m l 、 x s l 等标准,具有研扩震性和易维护性,提供对多种类型客户端的支持。本文 重点分析了i x l s t r u t s 模型的设计原理和关键嶷现技术。论文最后,在掇出的 i x l s t r u t s 模型的基础上设计开发了一个典型的w e b 应用网上书店,并给出 了详缨浚诗过程,说鞠了i x i s t r u t s 筷鍪豹哥行羧。 关键裁:j 2 e e 、m v c 设诗模式、x s l 、s t r u t s 、i x i s t r u t s a b s t r a c t i nr e c e n ty e a r s ,w i t ht h er a p i dd e v e l o p m e n to fn e t w o r ka n de x t e n s i v e a d o p t i o n o f j 2 e ep l a t f o r m m u l t i l a y e rw 曲s t r u c t u r eb a s e do nb s g r o w su pg r a d u a l l y m v c d e s i g np a t t e r ns e p a r a t e sc o n t r o lo f d a t af r o m r e p r e s e n t a t i o no fd a t a ,a n dt h e r e f o r eh a s t h e a d v a n t a g e o fi m p l e m e n t a t i o no fm u l t i l a y e r w 曲a p p l i c a t i o n s ,s t r u t s i st h e a p p l i c a t i o nf r a l r l e w o r kw h i c hi m p l e m e n t sm v c b a s e do nj 2 e ep l a t f o r m i te a s e st h e b u r d e no fc o n s t r u c t i n gm u l t i 1 a y e rw e ba p p l i c a t i o n sa n dp r o v i d e sr e u s a b l es o f t w a r e a r c h i t e c t u r e i ns t r u t s ,v i e wi sm a d eu po fj s pa n dj s pc u s t o mt a gl i b r a r i e s h o w e v e r , a sa ne x c e l l e n tt e c h n o l o g yf o rc r e a t i n gv i e w s j s p sh a v es o m ed r a w b a c k s , e s p e c i a l l yt h ej s ps 3 r n t a xi sn o tx m lc o m p l i a n ta n dt h e r e f o r ef a i l st og u a r a n t e et h a t r e s u l t i n gx m l o rh t m ld o c u m e n t sw i l lb ew e l lf o r m e d i nt h i sw a y , t h ee x i s t i n g f r a m e w o r ki sn o tp r o v i d e dw i t hg o o d p r e s e n t a t i o nl a y e rf l e x i b i l i t y a si ss t a t e da b o v e ,t h i st h e s i si n t r o d u c e sx s l t e c h n o l o g y t h r o u g ha n a l y s i n gi t s c h a r a c t e r i s t i c ,w ec a nc o m b i n ex s lw i t hs t r u t sb e c a u s eo f t h em i g h t yc o n v e r s i o n f u n c t i o ni nx s l ta n d i m p r o v ev i e w o fs t r u t s w ep r o v i d ea ni m p r o v e dm o d e l i x i s t r u t s a f t e rp u t t i n gf o r w a r dar a t i o n a ls o l u t i o n ,t h i sm o d e li st h ee x t e n s i o no f s t r u t s i ts e p a r a t e sb u s i n e s sl o g i cf r o mp r e s e n t a t i o na n d s u p p o r t sx m l x s l i t c a n s u p p o r tm a n yt y p e so f c l i e n t s s u c ha si e p d a t h i sm o d e l i se a s i e rt om a i n t a i na n d e x t e n d t h ee m p h a s i so f t h et h e s i si n c l u d e st h ed e s i g n p r i n c i p l ea n dk e yt e c h n i q u e o f i x i s t r u t sm o d e l f i n a l l y , a t y p i c a lw e ba p p l i c a t i o n - o n l i n e b o o k s t o r e i sd e s i g n e d a n di m p l e m e n t e du s i n 2i x i s t r u t s k e yw o r d s :j 2 e e m o d e l v i e w c o n t r o l l e rd e s i g np a t t e mx s l s t r u t si x i s t m t s 河海大学硕士学位论文 基于j 2 e e 的m v c 设计模式的研究和实现 1 1 研究背景 第一章绪论 当今时代信息技术飞速发展,人们已经处于数字化的生存空间之中。i n t e r n e t 构造了无限的信息资源,它的普遍使用已经从根本上改变了人们的生活方式和工 作方式,也改变了企业的经营方式和服务方式。 近年来,随着网络技术的迅速发展和j 2 e e 平台的广泛采用,基于b s 的多层 w e b 体系结构逐渐发展成熟起来,多层w e b 应用的开发己成为主流。但是,即使 利用最先进的软件平台j 2 e e ,开发这样的应用仍然是个难题。在多层w e b 体系结 构的设计中,普遍存在着程序可重用程度低、维护工作繁琐、应变能力较弱等不 足。同时,多层w e b 应用软件需要面对复杂的网络环境、多样化的用户需求、灵 活的业务模式、复杂的业务流程、众多的组织机构及层次、角色分工等问题,在 业务和技术上也是复杂多变的。因此,在基于组件的j 2 e e 平台充分内置了灵活的 情况下,如何组织应用程序以实现简单高效的应用程序升级、维护和扩展,以及 如何让不懂程序代码的人员避开程序数据【1 1 ,成为我们首先要解决的问题。而且, 我们还要充分考虑到多层结构的特殊性;各层之间需要密切配合才能完成最终功 能,又要在实际开发中尽可能的使各层的开发相对独立,减少各层之间的耦合程 度,避免开发人员相互制约。 m v c 源于传统的面向对象语言s m a l l t a l k 一8 0 t 2 1 ,是一个经典的设计模式。它 是设计交互式应用时广泛采用的一种设计模式,也是j 2 e e 蓝图推荐的在开发w e b 应用时使用的方法口1 。利用m v c 设计模式开发w e b 应用,可以将表现逻辑和业务 逻辑分离,构建可复用的软件系统框架,同时简化软件开发,提高软件性能和可 维护性,达到提高软件质量的目的。 s t r u t s 是一个基于j 2 e e 平台、对m v c 设计模式实现的框架。它在2 0 0 1 年6 月作 为a p a c h ej a k a r t a 项目的组成部分问世运做。s t r u t s 主要采用大多数开发者熟知的 j a v a b e a n 、j a v as e r v e rp a g e ( j s p ) 、s e r v l e t 等标准技术鸭对m v c 设计模式的三个 部分提供了对应的实现组件。项目的创立者希望通过该项目能有助于开发者利用 j s p 辛l j s e r v l e t 的优点更加快速、容易的建立可扩展的多层w e b 应用。s t r u t s 规定了 应用的体系结构,为应用系统提供了一个良好的软件构架,解决了由于应用的复 杂性而在软件开发过程中所带来的各种问题,并对于实现在应用系统建设初期所 制定的软件功能、开发投入、开发周期、项目的组织和管理上的目标,都有极大 河海大学硕士学位论文 基于j 2 e e 的m v c 设计模式的研究和实现 的帮助a 它的目标是要全面减轻构建多层w e b 应用的负担,提供可复用的框架。 在s t r u t s ,视图部分通常基于j s p 和t a 9 1 i b 技术来构建。j s p 有力地推动了j a v a 在w 曲开发中的应用。同时,在j s p 标签库的帮助下,j s p 为w e b 和j 2 e e 应用中的 表现层开发提供了丰富和强大的工具。但是,以j s p 作为显示手段也存在着一些 局限性: 1 s t r u t s 的标签库非常复杂,学会使用s t r u t s 的标签库需要一个长期的过程; 2 在开发过程中,对j s p 页面的任何修改都会导致容器重新编译j s p ,这样 是非常耗费时间的; 3 对x m l 的支持不佳。j s p 不能保证生成的结果文件是1 0 0 “格式良好” ( w e l l f o r m e d ) 的x m l 。在这个支持x m l 的i m e m e t 访问设备不断涌现的时代, 越来越多的设备都可接入到互联网上,w e b 应用将会面临多种客户端显示的挑 战,而现有的框架不具备这方面的扩展性。 1 2 研究内容 论文主要针对研究背景中提出的s t r u t s 框架中的几个问题进行解决,给出了 一个用x s l 替代j s p 的解决方案。那么,用x s l 作为s t r u t s 中v i e w 的实现技 术有什么独到之处呢? 可以先看看x s l 具备的特点: x s l 是w 3 c 的正式标准,具有分离数据内容和表现形式的特点。x s l 保证 输出的内容是1 0 0 “格式良好”的x m l 。利用x s l t 可以方便地获得各种输出 格式,如纯文本、h t m l 、w m l 和其他各种x m l 格式,对于多种i m e m e t 访问 设备都提供了良好的支持。 本文的主要研究内容是:首先从理论上对在开发基于j 2 e e 的多层w e b 应用 中采用m v c 设计模式的必要性做了论述,然后研究了国内外最流行的w e b 应用 框架s t m t s - 一一个基于j 2 e e 平台、实现了m v c 设计模式的框架,分析其实现 原理和特点,并剖析了其中使用j s p 和t a g l i b 实现v i e w 存在的问题;晟后针对 此问题提出了一个合理的解决方案,并给出了一个对s t r u t s 改进后的模型 i x i s t r u t s ( i n t e g r a t ex s l i n t os t r u t s ) 。i x i s t r u t s 模型在不改变s t r u t s 的m o d e l 和 c o n t r o l l e r 的前提下,采用x s l 技术替换了v i e w 中的j s p 。该模型是s t r u t s 的扩 展,支持x m l 、x s l 等标准,具有很强的可扩展性和易维护性。在论述了改进 方案的可行性和优点的同时,重点分析了改进模型的设计原理和关键实现技术。 在最后应用i x i s t r u t s 模型设计了一个典型的w e b 应用,说明了i x l s t r u t s 的可行 性。 河海大学硕士学位论文基于j 2 e e 的m v c 设计模式的研究和实现 1 3 论文组织 本文的章节安排如下: 第一章绪论。介绍了本文的研究背景、主要研究内容和全文的组织结构。 第二章j 2 e e 体系结构和m v c 设计模式。介绍了j 2 e e 体系结构和m v c 设计模 式的概念,从理论上对在开发基于j 2 e e 的多层w e b 应用中采用m v c 设计模式的 必要性做了论述。 第三章s t r u t s 框架。研究了当前应用最广泛的w e b 应用框架s t r u t s ,分析其实 现原理和特点,并剖析了其中存在的问题。 第四章i x i s t r u t s ( i n t e g r a t e x s li n t os t r u t s ) 模型。通过分析现有s t r u t s 框架 的局限性,讨论了对其改进的方案,提出了一个符合多层w e b 体系结构特点的新 型模型i x i s t r u t s ,并重点分析了此模型的实现原理和关键技术及其具有的优点。 第五章基于i x i s t r u t s 模型的应用。在论文提出的i x i s t r u t s 模型的基础上,设 计开发了网上书店系统。具体给出了在线购书子系统的详细设计,进一步说明 i x i s t r u t s 的可行性。 第六章总结与展望。对本论文的工作进行总结,指出了本文中许多值得研 究和探讨的问题,对今后的工作做了展望。 塑堡查兰坐望丝壅 苎主些堡皇塑竺曼丝笪堡塞塑堑塞塑窒垫 第二章j 2 e e 体系结构和m v c 设计模式 2 1j 2 e e 体系结构 2 1 1 企业应用面临的挑战及多层b s 构架 计算机网络技术的发展和成熟,特别是i n t e m e t 的普及,将应用扩展到局域 网、广域网甚至i n t e m e t 上已经成为企业发展的必然需求。企业迫切需要有效地 实施企业系统的开发,构建出高质量结构、高度可用的企业应用,具备与网络时 代相适应的特点,具有集成i n t e r n e t 的能力。面对迅速变化的技术和经济形势所 带来的冲击、企业应用技术所带来的新需求,企业级的应用开发面临着反应性、 程序设计生产率、可靠性、可用性、安全性、可扩展性、集成化等多方面的新挑 战。 组件技术和应用服务器技术的出现为企业级网络分布式应用提供了很好的 技术支持,可以有效地控制因重复开发而带来的应用系统成本的提高并增强应用 系统的重复使用性,发挥面向对象分析设计的功能。在这种局面下,多层b s ( b r o w e r s e r v e r ) 结构应用而生。客户机的规模被压缩,成为一个简单的浏览器; 应用逻辑被集中起来,至于一个或多个服务器上。图2 一l 便是一个主流的基于多 层b s 构架的企业系统结构图。 图2 1多层b s 企业应用系统结构图 目前,分布式企业应用最前沿的体系结构是多层b s 构架,现代企业分布式 多层体系结构的解决方案是基于应用服务器技术和组件开发的分布式应用。多 层b s 体系结构能够分散服务器的压力,增强系统的可扩展性,使应用具有良好 的可重用性和可维护性,同时简化客户端,减少维护费用。 首先,多层结构能将业务的处理分散到不同的服务器上。这样的处理过程在 河海大学硕士学位论文 基于j 2 e e 的m v c 设计模式的研究和实现 时间上各个模块可以并行处理,提高了效率;在空间上分布在不同的节点处理, 分散了各个节点的压力,使得整个系统能够承担更大业务量的处理。 第二,多层结构增强了系统的可扩展性。因为应用服务器可以是物理上分布 的多个服务器,系统可以自动调节各个服务器之间的负载平衡,客户端并不需要 关心访问的是哪一个服务器。对于更大业务量的需求,系统也可以很容易的无限 制的扩展。 第三,多层结构提高了应用的可重用性和可维护性。整个系统都是按照组件 开发的模式进行的,每个组件完成一个单一的功能,同时可以互相调用,使得相 同功能的组件只需一次编码,代码的可重用性好。如果业务需求有改变,只需修 改相应的组件模块,只要接口不变对于别的组件都无影响,系统的维护量极小。 另外,对于w e b 的访问,这类解决方案还提供了数据库动态网页生成引擎, 它与应用服务器的结合进一步解决了w e b 用户的需求。无论是普通的 c l i e n t s e r v e r 应用,还是基于w e b 的企业应用,多层体系结构都会使不同企业的 系统更稳定、更健壮,满足系统不断增长的业务量需求。因此,基于c s 结构的 企业应用系统正逐渐被以应用服务器技术为特点的多层b s 体系结构所取代。 2 1 2j 2 e e 体系结构 j 2 e e 是一种利用j a v a2 平台来简化诸多与多级企业解决方案的开发、部署 和管理相关复杂问题的体系结构”1 。j 2 e e 提供了一套完整的开发多层分布式应 用的技术和设施( 服务a p i ) ,是为当今众多厂商支持的多层分布式应用的标准, 为快速灵活地建立大规模的分布式企业应用提供了高效的解决方案。 j 2 e e 使用多层分布式应用程序模型,根据功能的不同把应用程序逻辑划分 成各个组件。一个组件应该被安装在什么地方,取决于该组件属于多层j 2 e e 应 用的哪一层。这些层分别是客户层、w e b 层、业务层、企业信息系统层( e i s ) , 如图2 2 所示。 j 2 e e 应用1j 2 e e 应用2 巴豳i 动端i g l mlb 瓣_ 蕊瓣删l 贝 隧 ij s p 页面 i l ;型= l = _ _ _ 。 客户层i w e b 层i i 业务层l 客户端机器 j 2 e e 服务器机器 酉墨邯层 煳蒯略飘器 图2 - 2 多层j 2 e e 应用 河海大学硕上学位论文 基于j 2 e e 的m v c 设计模式的研究和实现 1 客户层( c l i e n tt i e r ) j 2 e e 应用可以是基于w e b 的,也可以是不基于w e b 的。 在一个基于w e b 的j 2 e e 应用中,用户的浏览器在客户层中运行,并从一个 w e b 服务器下载w e b 层中的静态h t m l 页面或由j s p s e r v l e t 生成的动态h t m l 页面。在一个不基于w e b 的j 2 e e 应用中,一个独立客户程序,或者一个不是运 行在h t m l 页面中、而是运行在其他基于网络的系统( 如手持设备或汽车电话) 中的a p p l e t 程序,在客户层运行,并在不经过w e b 层的情况下访问业务层构件 e j b 。 2 w e b 层( w e bt i e r ) j 2 e ew e b 组件可以由j s p 页面、基于w e b 的a p p l e t 以及显示h t m l 页面 的s e r v l e t 组成。就像客户层一样,w e b 层可能包含一个j a v a b e a n 来管理用户输 入,并将输入发送给在业务层中运行的e j b 来处理。 w e b 层也称为表示层( p r e s e n t a t i o nt i e o 。 3 业务层( e j b b u s i n e s st i e r ) 作为满足某个特定业务领域( 比如银行、零售或金融业) 需要的业务逻辑代 码由运行在业务层的e j b 来执行。一个e j b 从客户程序处接收数据,( 若需要) 对数据进行处理,再将数据发送到企业信息系统层存储。一个e j b 还从存储中 检索数据,并将数据送回客户程序。运行在业务层的e j b 依赖于容器提供诸如 事务、生命期、状态管理、多线程及资源缓冲池等十分复杂的系统级功能。业务 层也称e j b 层。 业务层和w e b 层起构成了j 2 e e 应用的中间层。 4 企业信息系统层( e i st i e r ) 企业信息系统层运行企业信息系统软件,这层包括企业基础设旌系统,例如 企业资源计划( e r p ) 、大型机事务处理( m a i n f r a m e t r a n s a c t i o np r o c e s s i n g ) 、数 据库系统以及其他遗产信息系统( l e g a c y i n f o r m a t i o ns y s t e m ) 。j 2 e e 应用组件因 为某种原因( 如访问数据库) 可能需要访问企业信息系统。j 2 e e 平台支持 c o n n e c t o r 架构,该架构是将j 2 e e 平台连接到企业信息系统上的一个标准a p i 。 一个j 2 e e 组件就是一个自带功能的软件单元。这些组件之间相互通信。j 2 e e 规范定义了下列组件旧j : 1 客户组件应用客户和a p p l e t ; 2 w e b 组件i a v as e r v l e t 和j s p ; 3 业务组件企业j a v a b e a n s ( e j b ) 组件。 j 2 e e 的巨大吸引力1 在于: 1 平台独立性 企业的信息分布在不同的平台和应用中,在程序设计语言方面需要作出权 衡。所选择的语言能够在企业中方便地应用,而不显得笨拙,事务处理也要高效。 河海丈学硕士学位论文 基于j 2 e e 的m v c 设计模式的研究和实现 当集成各种不同的技术进而形成具体的平台和应用时,采用统一的程序设计模型 就能够减少许多困难。 2 可重用性 代码重用是所有程序设计的目的之一。要达到重用目的,方法之一就是把应 用的商业需求划分为不同的组件,而采用面向对象方法封装公用功能是另外一种 方法,j 2 e e 采用了这两种方法。j 2 e e 的j a v a 是一种面向对象的程序设计语言, 提供了重用机制,但是不像对象那样,创建和管理组件需要一种复杂的基础框架 机制,基本的面向对象概念并未提供这样的机制,然而j 2 e e 提供了一种相当强 大的机制来重用组件。 3 模块化 当开发一个完整的服务器端应用程序时,程序会迅速变大、复杂化。把应用 划分为相对独立的模块,每个模块负责处理一个具体的任务,按照这种方式,理 解和维护应用程序就会变得容易。模块化应用的手段有j a v as e r v l e t 、j a v as e r v e r p a g e 和e n t e r p r i s ej a v a b e a n 它们可以把应用程序划分为不同的层和任务。 基于j 2 e e 进行企业系统的开发,不仅能够简化应用结构、提高开发效率, 而且构建的系统具有很强的可移植性、重用性、可伸缩性。因此,j 2 e e 为搭建 具有可伸缩性、灵活性、易维护性的企业系统提供了良好的机制1 。 2 2m v c 设计模式 设计面向对象软件比较困难,而设计可复用的面向对象软件就更加困难。至 今,我们追求软件复用的目标已经多年,但没有取得很大的成功。实际上,绝大 多数业务复用成功的例子都发生在用户接口领域,而不是业务组件领域,而后者 才是我们努力追求的目标。作为业务系统的设计师,他们力求促进复用,但是实 际上只专注于设计和构架层次上的复用。设计模式证明了它是一种提高复用层次 的极好方法h 。 2 2 1 设计模式 设计模式是情境中标准设计问题的重复性解决方案l l 。 一般而言,一个设计模式有四个基本要素拉j : 1 模式名称( p a t t e r n n a m e ) 一个助记名,它用一两个词来描述模式的问题、解决方案和效果。命名一个 新的模式增加了人们的设计词汇。设计模式允许人们在较高的抽象层次上进行设 计。模式名称可以帮助人们思考,便于与其他人交流设计思想及设计结果。找到 河海大学硕士学位论文 基于j 2 e e 的m v c 设计模式的研究和实现 恰当的模式名称也是设计模式编目工作的难点之一。 2 问题( p r o b l e m ) 描述了应该在何时使用模式。它解释了设计问题和问题存在的前因后果,它 可能描述了特定的设计问题,如怎样用对象表示算法等;也可能描述了导致不灵 活设计的类或对象结构。有时候,问题部分会包括使用模式必须满足的一系列先 决条件。 3 解决方案( s o l u t i o n ) 描述了设计的组成成分,它们之间的相互关系及各自的职责和协作方式。因 为模式就像一个模板,可应用于多种不同场合,所以解决方案并不描述一个特定 而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义 的元素组合( 类或对象组合) 来解决这个问题。 4 效果( c o n s e q u e n c e s ) 描述了模式应用的效果及使用模式应权衡的问题。尽管描述设计决策时,并 不总提到模式效果,但它们对于评价设计选择和理解使用模式的代价及好处具有 重要意义。软件效果大多关注对时间和空间的衡量,它们也表述了语言和实现问 题。因为复用是面向对象设计的要素之一,所以模式效果包括它对系统的灵活性、 扩充性或可移植性的影响,显式地列出这些效果对理解和评价这些模式很有帮 助。 不同的设计模式具有一些共性: 1 设计模式是从实践中获得的。设计模式并非凭空想象产生的。实际上, 它们大都来自于实践,是被“发现( d i s c o v e r ) ”而不是“写作( w r i t e ) ”出来 的。 2 设计模式表达好的设计。设计模式并不仅是关于对象的设计,而且关于 对象间的通信。因此有时也称为“通信模式”。正是简单而不乏优雅的通信方法 设计使得设计模式变得如此重要。 3 设计模式避免无谓的重复劳动。 4 设计模式可重用。 5 多个设计模式可以一起用来解决更大的问题。孤立地使用某个设计模式 还不能够充分发挥设计模式的优势,通常将多个设计模式联合使用。 6 设计模式存在于不同层次的抽象级别。设计模式存在于不同的粒度 ( g r a n u l a r i t y ) ,小到具体的解决方案,大到通常的系统问题。 7 模式不断向前发展。设计模式使人们可以更加简单方便的复用成功的设 计和体系结构。将己证实的技术表述成设计模式会使新系统开发者更加容易理解 其设计思路。设计模式能够帮助做出有利于系统复用的选择,帮助设计者更快更 好的完成系统设计。 河海大学硕士学位论文 基于j 2 e e 的m v c 设计模式的研究和实现 2 2 2m v c 设计模式 当前的应用系统正在向多层w e b 的方向发展。设计多层w e b 应用的一个难点 是如何创建结构合理整洁的瘦客户机层。在组合正确的外观和行为、包装表示逻 辑的同时,不能和任何业务逻辑混杂,将用户界面、流程控制和业务逻辑进行分 离,要在各层创建易于阅读、易于维护、易于扩展的代码 1 。这就需要一个能开 发出松散耦合应用程序的解决方案:模型视图控制器( m v c ,m o d e l v i e w c o n t r o l l e r ) 设计模式。 2 2 2 1m v c 在传统应用程序设计中的应用 模型视图控制器( m v c ) 模式源于传统的面向对象语言s m a l l t a l k 一8 0 【2 j ,它 是第一个分开表示逻辑和业务逻辑的设计模式。m v c 引入视图( 表示层) 、模型 ( 数据) 和协调两者的控制器。在出现m v c 模式之前,用户界面设计通常把这 些层和并在一起,而m v c 模式则把它们分离开,使各个模块相对独立,提高灵 活性与复用性。 m v c 将应用程序系统分为三个组成部分: 1 v i e w :用户视图模块,这是用户界面部分。与w e b 应用程序一样,主管 应用程序与人之间的接口。一方面它为用户提供了输入手段,并触发应用逻辑运 行;另一方面,它又将逻辑运行的结果以某种形式显示给用户。 2 c o n t r o l l e r :流程控制模块,该部分是用户界面与m o d e l 的接口。一方面 它解释来自于v i e w 的输入,将其解释成为系统能够理解的对象,同时它也识别 用户动作,并将其解释为对m o d e l 特定方法的调用;另一方面,它处理来自于 m o d e l 的事件和m o d e l 逻辑执行的结果,调用适当的v i e w 为用户提供反馈。 3 ,m o d e l :事务逻辑模块,这是整个模型的核心。它表示的是解决方案空间 的真正的逻辑。它采用面向对象的方法,将问题领域中的对象抽象为应用程序对 象。在这些抽象的对象中封装了对象的属性和这些对象所隐含的逻辑。 v i e w 、c o n t r o l l e r 、m o d e l 三者的动态协作关系如图2 3 所示。 从图中我们可以看到,c o n t r o l l e r 接收使用者的消息,要求m o d e l 处理应用领 域的资料:m o d e l 告诉v i e w ,让v i e w 知道m o d e l 的内容已更新,v i e w 接获通知 并进行准备工作,就绪了才要求m o d e l 送来新内容,显示于视窗里。上图是典型 的m v c 结构,但也有许多衍生出来的结构。例如,有些系统的c o n t r o l l e r 及v i e w 都可以接收使用者传来的消息。通常,屏幕上可显示多个视图,各呈现m o d e l 的 某一个层面,所以一个m o d e l 可配合多个v i e w 。 河海大学硕士学位论文 基于j 2 e e 的m v c 设计模式的研究和实现 方法调用一事件 图2 - 3 m v c 动态协作关系 传统的m v c 模式只是从概念上将视图从流程控制、业务逻辑中独立出来,并 定义了相互间作用的机制,使各个模块的开发相对独立,但是它没有针对不同视 图类型,解决流程控制等对象的统一问题。因此,针对具体的研究对象,我们在 使用m v c 模式时需要对此做进一步的研究。 2 2 2 2m v c 在w e b 中的应用 传统的m v c 模式主要针对一般的应用程序,而w e b 开发向软件开发人员提 出了一些特有的挑战,最明显的就是客户机和服务器的无状态连接。这种无状态 行为使得模型很难将更改通知视图。在w e b 应用中,为了发现对应用程序状态 的修改,浏览器必须重新查询服务器。因此,在w e b 中引入m v c 设计模式需 要对其做进一步的改进以适应w e b 这样的环境。 m o d e l 2 就是在w e b 这样的特殊环境下m v c 设计模式的一种变体,它把j s p f 【1 s e r v l e t 组件结合在一起【l3 1 。在m o d e l 2 中,v i e w 是应用程序的外观,由j s p 组件实 现。c o n t m l l e r j j 是由s e r v l e t 组件来实现,它负责处理导航流,可以调用m o d e l 并 且负责选择正确的j s p 页面来创建和显示动态内容。m o d e l 2 的体系结构如图2 4 所示。 口 l 一j w e b a p p l i c a t i o ns e r v e r e i sr e s o u r c e s 图2 4m o d e l 2 体系结构 河海大学硕士学位论文基于j 2 e e 的m v c 设计模式的研究和实现 m o d e l 2 的目的和m v c 一样,也是利用控制器来分离模型和视图,达到一种 层间松散耦合的效果,提高系统灵活性、复用性和可维护性。它确立了开发人员 与网页设计者的角色分工,减轻了开发人员的工作量,使得开发人员不必考虑繁 琐的网页设计,而只专心于商业事务的开发和后台处理工作。网页设计者也可以 轻松的改变程序的外观而不需要知道后端s e r v l e t 的工作方式。在实际应用中,项 目越复杂,使用m o d e l 2 的优势就越大。 2 2 2 3m v c 的优点 m v c 模式常用于以下几个方面:分布式应用:大型应用;生命周期长的应用; 界面和后台的可移植性非常重要的地方:数据必须使用多种方法进行观察和操作 的地方;对多开发人员支持同步、模块化开发;允许根据技能进行工作的分工; 简化单元测试:使用在不同应用中可重用的企业b e a n 。 通过上面的分析,可以看到使用m v c 模式进行系统设计可以获得以下优点: 1 ,设计清晰:用模型中的方法来操作它的数据和状态,很容易理解如何来 控制模型的行为。当设计一个应用时,这种方式将使整个程序更加容易执行和维 护。 2 模块的有效性:如果需要,任何组件甚至整个模块都可以换进换出,视 图、控制器或模型的程序改变不会都影响到其他方面。不同的组件开发能够同时 进行。 3 代码和设计的复用性:广泛采用可复用的组件,能够降低薪项目的开发 成本,通过对设计的复用,使得开发小组之间更易于沟通,设计的系统更易于理 解。 4 易于维护:控制器和视图可以随着模型的扩展而进行相应的扩展,只要 保持一种公共的接口,控制器和视图的旧版本也可以使用。 5 功能强大的用户界面:用户界面与模型方法调用组合起来。发送给模型 的“标准”命令,都是由单个用户行为触发的。这就使得程序可以使用更加清晰 友好的界面发布给用户。 6 允许多种用户界面的扩展:在m v c 模式中视图与模型没有必然的联系, 都是通过控制器发生关系。如果要增加新类型的用户界面,只需要改动相应的视 图和控制器即可,而模型则无需发生改动。 2 3 基于j 2 e e 和m v c 开发多层w e b 应用 即使利用最先进的软件平台j 2 e e ,开发多层w 曲应用仍然是个难题。在基于 河海大学硕士学位论文 基于j 2 e e 的m v c 设计模式的研究和实现 组件的j 2 e e 平台充分内置了灵活的情况下,如何组织应用程序以实现简单高效的 应用程序升级、维护和扩展,以及如何让不懂程序代码的人员避开程序数据, 成为我们首先要解决的问题。我们既要充分考虑到多层结构中各层之间需要密切 配合才能完成最终功能,又要在实际开发中尽可能的使各层的开发相对独立,减 少各层之间的耦合程度,避免开发人员相互制约,同时还必须考虑如何提高系统 的效率。 m v c 是设计交互式应用时广泛采用的一种设计模式,也是j 2 e e 蓝图推荐的 在开发w e b 应用时使用的方法【3 j 。m v c 模式分离了数据的控制和数据的表现。 由于不存在耦合,将多数据集表述在多视图中就变得很容易,同时也使得为新的 客户类型提供支持更为简单。使用这种结构,代码冗余被最大限度地减少。对于 开发人员来讲,可以分清开发者的责任:程序设计人员可以专注于业务的处理, 网页设计人员专注于用户交互的界面。基于j 2 e e 平台和m v c 设计模式,可以容 易的构建可复用的软件系统框架,同时简化软件开发,提高软件性能和可维护性, 达到提高软件质量的目的。 2 4 本章小结 通过对应用程序体系结构模型发展的简要回顾,针对设计多层w e b 应用中存 在的问题出发,引入了m v c 设计模式。分析了传统m v c 模式的原理、特点和 在w e b 应用中的特点。从理论上对在开发基于j 2 e e 的多层w e b 应用中采用m v c 设计模式的必要性做了论述。 河海大学硕士学位论文 基于j 2 e e 的m v c 设计模式的研究和实现 第三章s t r u t s 框架 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 ) 项目,其最 初萌芽于c r m g m c c l a n a h a n 的构思。s t r u t s 是一个基于s u nj 2 e e 平台的m v c 框 架,主要是采用s e r v l e t 和j a v as e r v e rp a g e ( j s p ) 技术来实现的。项目的创立者希 望通过对该项目的研究,改进和提高j s p 、s e r v l e t 、标签库以及面向对象的技术, 有助于开发者利用j s p 和s e r v l e t 的优点更加快速、容易的建立可扩展的多层w e b 应用。s t r u t s 依靠大多数开发者已熟知的标准技术,把s e r v l e t 、j s p 、自定义标 签和信息资源( m e s s a g er e s o u r c e s ) 整合到一个统一的框架中1 4 j 能充分满足应用开 发的需求,简单易用,敏捷迅速,在近几年中颇受关注,应用极为广泛。s t r u t s 当前最高发行版本为s t r u t s l 1 。 3 1s t r u t s 的体系结构 s t r u t s 把一组相互协作的类( 组件) 、j a v a s e r v l e t 、j s p 以及t a g l i b 组合在一个 统一的框架中,同时体现了m v c 模式所具有的“分离业务逻辑和表现逻辑”的 能力。 s t r u t s 的核心是一个m v c 风格的控制器。控制器搭起了模型层和视图层之间 的桥梁,同时整合了其他的一些技术去实现m o d e l 和v i e w 。在模型层,s t r u t s 可以很容易的与数据访问技术相结合,例如e j b ,j d b c 、o b j e c t r e l m i o n b r i d g e 等。在视图层,s t r u t s 能够与j s p ,v e l o c i t yt e m p l a t e s ,x s l 等这些表示层组件 相结合。s t r u t s 也包括开发人员想用来开发可扩展的、先进的应用的其他组件。 s t r u t s 是一个“隐藏支柱”的集合,帮助开发人员将分散的材料( 如数据库和页 面) 结合成一个整体的应用程序 钔。s t r u t s 的结构如图3 - 1 所示。 2 图3 - 1s t r u t s 结构 塑! 彗茎堡圭堂垡丝苎 苎王坚望塑竺! 堡生堡苎塑婴塞塑塞塑 s t r u t s 提供了一个统一的控制器a c f i o n s e r v l e t 。这个控制器可以用来管理导 航a 当a c t i o n s e r v l e t 接收n - - 个h t t p 请求,它通过配置文件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 m l f o r w a r d 类来保证控制流决策,选择一个a c t i o n 来校 验输入,并且访问业务层,从数据库或其他数据服务中检索信息。当处理完毕使 用a c t i o n f o r w a r d 类指向下一个要显示的页面。 让我们从m v c 的角度分析下s t r u t s 框架的三个组成部分:模型、视图、 控制器。 i 模型( m o d e l ) 在s t r u t s 框架中,模型分为两个部分:系统的内部状态和可以改变状态的操 作( 业务逻辑) 。内部状态通常由一组j a v a b e a n 表示。这些b e a n 可以是独立的 并能够持久保持它们的状态信息。在请求信息的时候,知道如何从外部数据源中 得到信息,例如数据库。实体e j b 也可以表示内部状态。大型应用通常在方法 内部封装系统的业务逻辑。小型应用中,操作可能会被嵌入在a c t i o n 类中,它 是s t r u t s 框架中控制器角色的一部分。在业务逻辑简单时,这个方法很适合。但 是我们建议从a c t i o n 类的角色中分离出业务逻辑。 2 视图( v i e w ) 基于s t r u t s 的应用一般会利用j s p 技术来构建视图组件。s t r u t s 包含扩展自 定义标签库,可以简化创建完全国际化用户界面的过程。 3 控制器( c o n t r o l l e r ) 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

温馨提示

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

评论

0/150

提交评论