(计算机应用技术专业论文)基于struts和hibernate框架构建web应用的研究与实现.pdf_第1页
(计算机应用技术专业论文)基于struts和hibernate框架构建web应用的研究与实现.pdf_第2页
(计算机应用技术专业论文)基于struts和hibernate框架构建web应用的研究与实现.pdf_第3页
(计算机应用技术专业论文)基于struts和hibernate框架构建web应用的研究与实现.pdf_第4页
(计算机应用技术专业论文)基于struts和hibernate框架构建web应用的研究与实现.pdf_第5页
已阅读5页,还剩67页未读 继续免费阅读

(计算机应用技术专业论文)基于struts和hibernate框架构建web应用的研究与实现.pdf.pdf 免费下载

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

文档简介

武汉理1 = 大学硕士学位论文 摘要 近年来,随着网络技术的迅速发展和j 2 e e ( j a v a2p la _ 响n ne m e r p r i s e e d i t i o n 】平台的广泛采用,基于b s 的多层w 曲体系结构逐渐发展成熟起来。 m v c ( m o d e l v i e w c o n 仃d l l e r ) 设计模式能够克服传统w e b 应用开发方式所固有 的弊端,分离了数据的控制和数据的表现,以适应越来越复杂的多层w 曲应用 系统的设计需求。因此,采用基于m v c 设计模式开发j 2 e ew 曲应用成为开发 人员的首选。 a d a c h es t m t s 是一个基于j 2 e e 平台、实现了m v c 设计模式的典型框架, 模型幽实现业务逻辑的j a v a b e a i l 或e j b 组件去构成,控制器由a c t i o ns e r v l e t 和a c t i o n 构成,视图由组j s p 文件构成。它全面减轻了构建多层w 曲应用的 负担,提供可复用的软件构架,其重要问题是配置文件s t r u t s c o n 趣x m l 的设计。 s 锄t s 提供了自己的控制器组件,并整合了其他相关技术用于实现m v c 设计模 式中的模型组件和视图组件。s t r u t s 适合于各种大小的项目,当然,对于大型项 目,它所体现出来的优势更加明显。 0 r m 是对象到关系数据库的映射。它是面向对象设计中一项重要的技术。 h i b e m a t e 是一个面向j a v a 环境的对象关系数据库映射工具。它不仅仅管理 j a v a 类到数据库表的映射,还提供数据查询和获取数据的方法。这样,j a v a 程 序员就可以随心所欲地使用对象编程思想来操纵数据库,把全部精力集中到对 对象和类进行编程,解决业务问题。其中,h i b e m a t e 作为o rm 印p i n g 中最好 的开源工具,受到越来越多的程序员的拥护。 本文首先介绍了j 2 e e 的基本知识和m v c 设计模式,在此基础上,详细阐 述了s 仃u t s 框架的体系结构和基本原理,并通过数据持久层概念的提出,介绍 了h i b e m a t e 的基本知识。然后通过应用s t n l t s 和h i b e m 砒e 框架开发无毒社 区管理系统,分析各项技术在实际开发中的应用方式,最后讨论了s 仃眦s 和 h i b e m a t e 的优缺点,并总结了项目中的各项体会。 关键宇:j 2 e e ;m v c ;s 订1 l t s ;h i b e m a t e :框架 武汉理工大学硕士学位论文 a b s t r a c t i nr e c e my e a r s ,m en 耽w o r kt e c h n o l o g yh a sb e e nd e v e l o p e dq u i c l 【l y 蛆d l c p l a 仃0 mo fj 2 e e ( j a v a 2p l a t f o r me m e r p r i s ce d i t i o n ) h a sb e e na d o p t e de x t e n s i v e l y a n d 也em u l t i _ l a y e rw e ba r c h i t e c t u r eb a s e do nb sp a t t e mm a t u r e sg r a d u a l i y 1 1 l e m o d e l - e w - c o n 仃o l l e rp a n e md i s c a r d sd i s a d v a n 诅g e sw h i c ht h ed e s i g l lp a n e mi n 订a d i t i o n a lw e b 印p l i c a t i o nh i ts e p a r a t e sm ec o n n d lo ft h ed a t aa n dt h ev i e wo f t 1 1 ed a 止as oa st om e e tt h ed e m a n dt o 也em u l t i - l a y e r 、e b 印p l i c a t i o nc o m p l i c a t e d m o r ea n dm o r e s om v cp a n e mi s t l l eb e s tc h o i c et 0d e v e l o pm ej 2 e ew e b a p p i i c a t i o n a p a c h es t n l t s 丘锄e w o r kb 踮e do nm ej 2 e ep l a t f o r r i l ,i sat y p i c a l 仃锄e w o r kt o i m p l e m e mt h em o d e l - e w - c o n t r o l l e r ( m v c ) d e s i 虮p a n e m m o d e l i sm a d eu po f j a v a b e a no re j bn l a ti m p l e m e mt h eb u s i n e s sl o 百c c o n 打0 1 l e ri sc o n s t i t u t e db y a c t i o ns e r v l e ta n da c t i o n ag r o u po fj s p6 i e sc o n s t i t u t ev i e 、t h ef r a m e w o r k 1 i g l l t e n st h eb u r d e nt o c o n s t n l c tt h em u l t i - l a y e rw e b 印p l i c a t i o na n dp m v i d e s c o m p o n e n t sw h i c hc a nb er e u s e d t h ed e s i g no fm es t r u t s c o n 6 9 x m l 锄dt h e c o i g u r a t i o nf i l ei s a ni m p o r t 蛐tp a r tf o rt 1 1 es t m t sf r 锄e w o r k s t n l t sp r o v i d e s c o n 乜d l l e rc o m p o n e n ta i l di n t e g r a t e so t h e rr e l a t e dt e c h i l o l o g i e st oi m p l e m e mt l l e m o d e lc o m p o n e n ta n dv i e wc o m p o n e n to fm v c p a t t e m s t n n sa r ef i tf o ra l lk i n d so f p r o j e c t se s p e c i a l l yf o rl a r g eo n e sw h j c h c a l le m b o d ym o r ea d v a l l t a g e so fs t r u t s o r mm e a n so b j e c t r e l a t i o n a l m 印p i n g i t i sa ni m p o r t a m t e c l l l l i q u e i n o b j e c t - o r i e n t e dd e s i 驴i n g h i b 啪a i ei sa 1 1o r mt o o lf o rj a v ac n v i r o m e n in r n a n a g e sm em 印p m g 丘d mj a v ac l a s s e st od a t a b a s et a b l e sa f l dm eo p e r a t i o no f p e r s i s t e n to b j e c t s s o ,j a v ap r o 目刊:1 1 m e r sc 鼬丘它e l ym a n i p u l a t ed a ta _ b 舔eb yo b j e c t p r o g r a m m i n gi d e a ,a sw e ua sp a ya 仕e n t i o nt oo b j e c tp m g r 吼m i n ga l l dc l a s s p r o g r 猢i n 舀a 芏l ds o l v et 1 1 eo p e r a t i o np r o b l e m s h i b e m 砒eb e c o i r 坞s 也eb e s tt o o lo f 0 rm 印p i n g 衄dg e tt h em o r e 柚dm o r ep r o g r a 咖e r s l o v e t m sp 印e rf i r s t l yd e s c m e dt h ea r c h i t e c t u r ea i i dp r i n c i p l eo fs 仃u t s 妇n e w o r k b a s i n go nt h ei r l 订o d u c i n go fj 2 e ea 1 1 dm v cm o d e l s e c o n d l y ,t h r o u 曲r a i s i n gt h e 武汉理工大学硕士学位论文 c o n c e p t i o no fd a t ap e r s i s t e n c el a y e r ,l i sp a p e ri n t r o d u c e dt l l eb a s i ch 1 0 w l e d g eo f h i b e m a t e n l i r d l y ,t h r o u g ha 1 1e x 锄p l eo fa p p l y i n gs t m t sa 1 1 dh i b e m a t e 行锄e w o r k t ow u d uc o m m 眦时m a i l a g e m e ms y s t e m t h i sp 印e r a n a l y z e d i nd e t a j lt h e 叩p l i c a t i o no fs t r u t sa n dh i b e m a t e 行a m e w o r ki m op r a c t i c a ld e v e l o p i n gp r o c e s s a t e n d ,i td i s c u s s e da d v a n t a g e sa n dd i s a d v a n t a g e so fs t m t sa i l dh i b e m a _ t cf a m e w o r k , a n ds u m m 撕z e dt l l ee x p e r i e i l c e si nt l l ep r o j e c td e v e l o p m e n t k e yw o r d s :j 2 e e ;m v c ; s t n n s ;h i b e m a t e :f r 锄e w o r k i 武汉理_ i 大学硕士学位论文 1 1 课题背景 第1 章绪论 当今时代信息技术飞速发展,人们已经处于数字化的生存空间之中。i n t e m e t 构造了无限的信息资源,它的普遍使用己经从根本上改变了人们的生活方式和 工作方式,也改变了企业的经营方式和服务方式。 近年来,随着网络技术的迅速发展和j 2 e e 平台的广泛采用,基于b s 的多 层w e b 体系结构逐渐发展成熟起来,多层w e b 应用的开发已成为主流。但是, 即使利用最先进的软件平台j 2 e e ,开发这样的应用仍然是个难题。在多层w 曲 体系结构的设计中,普遍存在着程序可重用程度低、维护工作繁琐、应变能力 较弱等不足。同时,多层w e b 应用软件需要面对复杂的网络环境、多样化的用 户需求、灵活的业务模式、复杂的业务流程、众多的组织机构及层次、角色分 工等问题,在业务和技术上也是复杂多变的【1 。因此,在基于组件的j 2 e e 平台 充分内置了灵活的情况下,如何组织应用程序以实现简单高效的应用程序升级、 维护和扩展,以及如何让不懂程序代码的人员避开程序数据,成为我们首先要 解决的问题。而且,我们还要充分考虑到多层结构的特殊性:各层之间需要密 切配合才能完成最终功能又要在实际开发中尽可能的使各层的开发相对独立, 减少各层之间的藕合程度,避免开发人员相互制约。 m v c 源于传统的面向对象语言s m a l l t a l k 8 0 ,是一个经典的设计模式。它 是设计交互式应用时广泛采用的一种设计模式,也是j 2 e e 蓝图推荐的在开发 w e b 应用时使用的方法。利用m v c 设计模式开发w 曲应用,可以将表现逻辑 和业务逻辑分离,构建可复用的软件系统框架,同时简化软件开发,提高软件 性能和可维护性,达到提高软件质量的目的。 s t r u t s 是一个基于j 2 e e 平台、对m v c 设计模式实现的框架【2 j 。它在2 0 0 1 年6 月作为a 口a c h ej a k a n a 项目的组成部分问世运做。s t n j 乜主要采用大多数开 发者熟知的j a v a b e a i l ,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 和s e r v l e t 的优点更加快速、容易的建立可扩展的多层w 曲 应用。s t m t s 规定了应用的体系结构,为应用系统提供了一个良好的软件构架, 武汉理工大学硕士学位论文 解决了由于应用的复杂性而在软件开发过程中所带来的各种问题,并对于实现 在应用系统建设初期所制定的软件功能、开发投入、开发周期、项目的组织和 管理上的目标,都有极大的帮助。它的目标是要全面减轻构建多层w e b 应用的 负担,提供可复用的框架。目前在国内外许多的大型w 曲应用项目中得到广泛 应用【3 】。 对象关系数据库的映射在目前而言是一个非常重要的问题。这是因为 对象技术( 例如j a v a 技术) 是应用于新软件系统开发的最常见的环境。另外,关 系数据库仍然是许多人都青睐的持久信息存储方法,并且在较长时间内这种情 况不太会改变。对象范例基于软件工程的一些原理,例如藕合、聚合和封装, 而关系范例则基于数学原理,特别是集合论的原理。两种不同的理论基础导致 各自有不同的优缺点。而且,对象范例侧重于从包含数据和行为的对象中构建 应用程序,而关系范例则主要针对数据的存储。当为访问而寻找一种合适的方 法时,“阻抗不匹配”就成了主要矛盾:使用对象范例,我们使用它们的关系来 访问对象,而使用关系范例,则通过复制数据来联接表中的行。这种基本的差 异导致两种范例的结合并不理想。 为了解决两种范例之间差异所带来的问题,人们一直没有停止在这方面的 研究,许多产品和解决方案也层出不穷。h i b e ma _ t e 就是其中的一种非常优秀的 解决方案。 h i b e m a t e 提供的是一种轻量级的持久方案。从实现的原理来看,h i b e m a _ c e 是在j d b c 上面的一层轻型的封装。与不同的数据库具体的连接和优化 h i b e m a t e 并没有参与在其中。它只是对j d b c 做了一个非常优雅的封装,同时 提供了j a v a 对象和数据库模型的一一对应的映射关系。另外,h i b e r n a t e 还提供 了面向对象的查询语句和恢复机制。相对于使用j d b c 和s q l 来手工操作数据 库,使用h i b e m a t e ,不仅可以大大减少操作数据库的工作量,同时还可以使j a v a 程序员能够随心所欲的使用对象编程思维来操纵数据库。 1 2 课题研究的目的及意义 如今,在进行w e b 应用开发时,人们不是一切从头开始,而是积极地使用 一些现有的框架,以达到如下目的: 1 重用设计,以简化开发的复杂性: 2 武汉理工大学硕士学位论文 2 重用代码,减少编码和测试时间,提高工作效率; 3 提高系统的可扩展性和可维护性; 框架是在特定领域基于架构的、解决某类应用问题的半成品,是大粒度的 软件复用,它为w e b 应用开发提供了一个能够使用的架构模板和软件包,让开 发者从编码中解脱出来,不必一切都从头做起,自己来完成,只需将注意力集 中在业务逻辑上,从而减轻了开发者处理复杂问题的负担,提高了工作效率; 其次,在应用与分析框架的基础上,可以对其进行改进与扩展,以适应实际的 需求。因此框架也为扩展和维护系统奠定了基础。 另外,对已有优秀框架进行深入地学习与研究,领悟其中的设计理念,不 仅可以更灵活地将其付诸于实践,而且可以提高自身的设计水平,设计出高效 的系统乃至框架。 s t n i t s 框架是目前最流行的w e b 应用开发框架之一,而h i b e m a t e 是目前比 较流行的持久层框架之,对s t m t s 和h i b e m a t e 进行分析与研究,可以带来上 述好处。 1 3 课题研究现状 j a k a n a s t r u t s 是目前非常流行的一个企业级w e b 应用开发框架,是a d a c h e 软件组织负责开发的一个开源项目。它最早由c r a i g r m c c l a n a l l a i l 创建,并于 2 0 0 0 年5 月被捐赠给a s f 作为j a k a m 项目的组成部分,在短短的几年中,s n n s 得到了飞速的发展。2 0 0 1 年6 月,s t m t s l o 发布;2 0 0 2 年1 月,s t r u t s1 o 1 发 布;2 0 0 2 年2 月s t r u t s1 o 2 发布;历经s t m t s l 1b e t a i ,b e t a 2 ,b e t a 3 ,直到2 0 0 3 年6 月s t m t s l 1 最终版发布;2 0 0 4 年9 月s t m t s l 2 4 发布,这是现在比较稳定 的版本,不久还将推出s 饥n s l 2 6b e t a 版。目前,很多组织及个人都参与s t n l t s 框架的开发,同时使用s t 九l t s 框架进行w e b 开发的人也越来越多,这使得s t n n s 框架不断的发展与完善。 s 咖t s 是m v c 设计模式的一个实现,它将应用分为模型、视图和控制器三 部分。s t n n s 提供了自己的控制器组件,在视图组件上主要使用j s p 技术,也可 以和其他表示层框架如v e l o c i t y ,x s l t 等结合;在模型组件上,不但可以使用 一些标准的数据访问方式,如j d b c 和e j b ,也可以和一些第三方软件包如 h i b e m a t e ,i b a t i s ,o r b 等结合,是开发大规模w 曲应用程序的设计利器。 3 武汉理工大学硕士学位论文 如同s n l l t s 最初出现,立刻引起业内人士的关注和兴趣一样,h i b e m a t e 从 诞生那天起,就引发了一场对数据持久性处理问题的讨论。 一直以来,在j a v a 开发领域中,居于数据库应用的设计实现一直都是面向 关系的,也就是说于数据库相关的处理过程并没有实现真正的面向对象。如何 在数据存取的操作中实现真正的面向对象,以致使开发人员探索的问题,正在 使用中的对象序列化技术,e j b 中的e n 虹t y b e a n ( 实体b e a l l ) 技术等,都是在 这方面很好的探索。但是实体b e a l l 设计实现过程中的繁琐和复杂,使得许多开 发人员望而却步。 而h i b e m a t e 的出现,提供了一个符合j a v a 丽向对象编程思想、易于使用 的数据库持久化方案。因此,在目前行业的j a v a 数据库应用项目中,有越来越 多的开发人员开始尝试使用h i b e m 砒e 在数据库外面包裹上一层面向对象的外 衣,从而将开发人员从繁琐、重复、技术含量不高的数据库编程中解脱出来。 1 4 本文研究的主要内容 本文介绍j 2 e e 的基本知识和m v c 模式以及两个开源框架s t m 乜和 h i b e m a t e ,然后结合这两种技术构建w 曲应用,w e b 应用的表示层由s 饥l 乜框 架来实现,h i b e m a t e 框架完成了对象和关系之间的映射,从而实现业务层和数 据库层之间的交互。这两种技术结合起来充分发挥了两者的优点,基于二者的 w e b 应用开发简洁、结构清晰、有很好的可扩展性和可维护性,非常适合面向 对象的设计和开发。 1 5 论文的组织结构 第一章:介绍了课题的相关背景、课题研究的目的和意义以及课题的研究 现状。 第二章:介绍了j 2 e e 的相关基本知识。 第三章:介绍了m v c 的相关知识以及j s pm o d e l l 和j s pm o d e l 2 。 第四章:介绍了框架的概念、s 咖t s 的体系结构和主要组件以及s m l t s 的工 作流程。 第五章:介绍了h i b e m a t e 的体系结构和核心接口以及o r m 的概念。 第六章:用s t r u t s 和h i b e m a t e 框架构建一个w e b 应用系统,用具体实例说 d 武汉理工大学硕士学位论文 明了s t m t s 和h i b e m a t e 的应用方法。 第七章:对本文进行了总结,介绍了s n u t s 的优缺点以及项目的实旌经验。 武汉理工大学硕士学位论文 2 1 j 2 e e 概述 第2 章j 2 e e 架构 j 2 e e 是种利用j a v a2 平台来简化企业解决方案的开发、部署和管理相 关的复杂问题的体系结构。j 2 e e 技术的基础就是核心j a v a 平台或j a v a2 平 台的标准版,j 2 e e 不仅继承了标准版中的许多优点,包括“编写一次、随处运 行”的特性、方便存取数据库的j d b c a p i 、c 0 r b a 技术以及能够在i “把m e t 应用中保护数据的安全模式等等,同时还提供了对e j b ( e n t e r p r i s ej a v a b e a n s ) 、 j a v as e r v l e t sa p i 、j s p ( j a v as e r v e rp a g e s ) 以及x m l 技术的全面支持。 目前,j a v a2 平台有3 个版本,它们是适用于小型设备和智能卡的j a v a 2 平台m i c m 版( j 吖a 2 p 1 a t f o n n m i c r o e d i t i o n ,j 2 m e ) 、适用于桌面系统的j a v a 2 平台标准版( j a v a2p l a t f o 姗s t a n d a r de d “i o n ,j 2 s e ) 和适用于创建服务器应用程 序和服务的j a v a2 平台企业版( j a v a2p l a t f o 1 1e n t e r p r i s ee d i t i o n ,j 2 e e ) 。 2 2j 2 e e 框架 一个多层的分布式应用模型意味着应用逻辑依据功能被划分成组件,并且 可以在同一个服务器或不同的服务器上安装这些组成j 2 e e 应用的不同组件。一 个应用组件应被安装在什么地方,取决于该应用组件属于多层的j 2 e e 环境中的 哪一层a 这些层是客户层、w 曲层、业务层及企业信息系统层( e i s ) ,如图2 - 1 所示。 6 武汉理工大学硕士学位论文 j 2 e e 应用1j 2 e e 应用2 1 叵 咽机器 :三习挖ee应用服务器 既s 习数据库服务器 图2 1j 2 e e 体系结构 用户层:用来与用户交互,并把来自系统的信息显示给用户。j 2 e e 平台支 持不同类型的用户。包括h t m l 用户,j a v a a p p l e t s 和j a v a 应用等。 w 曲层:w 曲层产生表示逻辑,并接受来自客户端的用户反馈。在所接收 的客户端请求的基础上,表示层对用户的请求产生相应的回应。在j 2 e e 平台 中,是由w 曲容器内的s e r v l e t 和j s p 来实现这一层。 业务层:业务层负责处理某一特定领域的业务逻辑。它可以从客户程序接 收数据,作适当处理后存到数据存储设备中,也可以从数据存储设备中读取数 据,处理后发送给客户程序。业务层组件由j a v a b e 锄,e j b 组成。 e i s 层:该层为企业的信息服务系统服务,包括数据库系统,事物处理系 统,企业资源计划系统等。e i s 是j 2 e e 应用与非j 2 e e 应用的连接点。 由于j 2 e e 对企业级应用各层逻辑的划分,使得它具有以下优势: 1 高效的开发,j 2 e e 的多层应用模型允许不同的开发人员同时进行各个 层次的开发。表示逻辑层开发团队可以专注于用户界面的动态生成而不用考虑 业务逻辑层是如何操作的,相同的,业务逻辑层的开发团队也可以抛开显示逻 辑而专注于业务逻辑的开发。 2 良好的安全性,包括数据和访问控制的安全。由中间层服务器统一管理 数据库连接、数据接收、数据同步以及事务处理、线程调度等工作,最大限度 7 武汉理工大学硕士学位论文 地保障了数据的统一,完整和准确。任何客户端程序与数据库没有直接的连接, 完全地防止了外部和内部的侵入。 3 提高系统性能,过去的两层c s 系统,客户端直接与数据库系统连接, 这种系统的网络和服务器工作负荷大,直接影响业务处理的速度,且用户连接 多时容易在数据库端发生访问冲突。多层结构系统中,数据计算和数据处理集 中在中间层组件中,而多层结构系统能够实现分布计算功能。具体地说,可以 根据需要把各个组件分别或重复地分布在不同的计算机上,使整个系统的工作 量平衡分配到网络中。此外,中间层服务器的数据缓冲池,可减轻数据库的负 担,提高数据的重复利用速度。 2 3j 2 e e 应用组件和容器 j 2 e e 应用程序是由组件构成的。j 2 e e 组件是具有独立功能的软件单元, 它们通过相关的类和文件组装成j 2 e e 应用程序,并与其他组件交互。j 2 e e 规 范中定义了以下的j 2 e e 组件: 客户组件:应用客户端程序和a p p l e t s w 曲组件:j a v as e r 、r l e t 和j a v a s e n ,e rp a g e s ; 业务组件:e n t e r d r i s ej a v a b e a n s 。 在系统的部署过程中,组件被安装到容器中。容器就是组件与支持组件的 特定平台功能之间的接口。容器设置定制了j 2 e e 服务器所提供的内在支持, 包括安全,事务管理,j n d i 寻址,远程连接等服务。 2 4j 2 e e 标准服务 j 2 e e 平台由一整套服务( s e r v i c e s ) 、应用程序接口( a p i s ) 和协议构成,它对 开发企业的多层应用提供了全面的功能支持,主要有以下技术规范:j d b c 、 d l 、e j b 、r m i 、j s p 、j a v as e n ,l e t 、j m s 、j a v am a i l 等。 8 武汉理工大学硕士学位论文 第3 章m v c 模式 许多计算机系统的用途都是从数据存储检索数据并将其显示给用户。在用 户更改数据之后,系统再将更新内容存储到数据存储中。因为关键的信息流发 生在数据存储和用户界面之间,所以可能倾向于将这两部分绑在一起,以减少 编码量并提高应用程序性能。但是,这种看起来自然而然的方法有一些大问题。 一个问题是,用户界面的更改往往比数据存储系统的更改频繁得多。将数据和 用户界面这两部分耦合在一起带来的另一个问题是,业务应用程序往往会并入 远不止数据传输功能的其他业务逻辑。如何让w 曲应用程序的用户界面功能 实现模块化,以便可以轻松地单独修改各个部分是设计中的一个关键问题1 2 j 。 m o d e l e w c o n t r o l l e r 正是这样的模式,它实现功能模块和显示模块的分 离,使得应用程序更加可维护,可扩展,可移植和可复用,它最初是t r y g v e r e e n s k a u g 在二十世纪七十年代末为s m a l l t a l k 平台开发的框架,而发展到目前 为止,已经发展成了一个非常成熟的模式。 m v c 是m o d e l e w c o n t r o l l e r 的简称,即模型一视图一控制器,至今己被 广泛使用,在最近几年被推荐为s u n 公司的j 2 e e 平台的设计模式,受到越来越 多开发者的欢迎。 3 1m v c 模式的简介 m v c 是一种设计模式,把一个应用的输入、处理、输出流程按照m o d e l 、 v i e w 、c o n t r 0 1 l e r 的方式进行分离,这样一个应用被分成三个核心模块一模型、 视图、控制器,它们分别承担不同的任务。图3 1 显示了这几个模块各自的功 能和他们的相互关系。 9 武汉理工大学硕士学位论文 事件 图3 1 m v c 设计模式 1 ) 视图( v i e w ) 代表用户交互界面,对于w 曲应用来说,可以概括为h t m l 界面,但也有可能为x h t m l 、x m l 和a p p l e t 。随着应用的复杂性和规模性, 界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,m v c 设计 模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不 包括在视图上的业务流程的处理。业务流程的处理交予模型( m o d e l ) 处理。比如 一个产品的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入 数据和请求传递给控制器和模型。 2 ) 模型( m o d e l ) :就是业务流程状态的处理以及业务规则的制定。业务流 程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最 终的处理结果。业务模型的设计可以说是m v c 最主要的核心。目前流行的e j b 模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的 划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。它仅仅 告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。 对一个开发者来说,就可以专注于业务模型的设计。m v c 设计模式告诉我们, 把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人 员是否优秀的设计依据。抽象与具体不能隔得太远,也不能太近。m v c 并没有 提供模型的设计方法,而只声明应该组织管理这些模型,以便于模型的重构和 1 0 武汉理工大学硕士学位论文 提高重用性。 业务模型还有一个很重要的模型那就是数据模型。数据模型主要指实体对 象的数据保存( 持久化) 。比如将一个产品信息数据保存到数据库,从数据库获取 订单。我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型 中。 3 ) 控制器( c o n _ c r o l i e r ) 可以理解为从用户接收请求,将模型与视图匹配在一 起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它 就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的 用户请求。控制层并不做任何的数据处理。例如,用户点击一个连接,控制层 接受请求后,并不处理业务信息,它只把用户的信息传递给模型,告诉模型做 什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图, 一个视图可能对应多个模型。 3 2j s pm o d e l l 和j s pm o d e l 2 虽然m v c 设计模式很早就出现了,但在w 曲应用的开发中引入m v c 却 是步履维艰。这是因为w 曲应用系统的开发具有一些鲜明的特点。其一是客户 机与服务器间的无状态连接。h t t p 的底层是t c p i p 协议,而t c p i p 是一种 无状态连接的协议,这种无连接状态使得模型很难将更改通知视图。为了使视 图能同步表达模型的状态,客户端必须不断向服务器进行查询,这样会急剧加 重服务器端的负担。另一个特点是,传统的设计方式即页面到页面( p a g et op a g e ) 方式将数据显示、业务逻辑、流程控制和数据持久性处理等模块强耦合在一个 代码模块中,采用这种模型在开发中容易产生很多问题,而且会随着应用程序 规模的不断扩大而加剧系统开发、维护的复杂程度。这些问题主要包括: 1 ) h t m l 和j a v a 代码强耦合在一起:更改j s p 页面布局时需要更改j “a 代 码,网页设计人员不能直接参与页面开发,同时j a v a 代码编写者必须同时关注 网页设计,而不能专注于开发灵活高效的应用程序接口,给合理分配开发角色 和划分责任带来很大困难。 2 ) 内嵌的流程逻辑:要理解应用程序的整体流程,必须浏览所有网页,很 难对大数量网页和错综复杂的逻辑进行开发维护。 3 ) 调试困难:调试过程中必须兼顾这些集中于同一网页文件中的h t m l 武汉理工大学硕士学位论文 标记、j a v a 代码和j a v a s c r i p t 代码,使调试变得相当困难。 4 ) 强耦合性:没有对应用系统的各实现模块进行抽象和分离,更改业务逻 辑或数据将牵涉到相关的每个网页,需要逐个页面进行修改,非常不利于对应 用系统进行扩展、更新和维护。 为了解决以上问题,s l h l 公司先后制定了两种规范,称为j s pm o d e l l 和 j s p m o d e l 2 。虽然m o d e l l 在一定程度上实现了m v c ,但是它的运用并不理想; 直到基于j 2 e e 的j s pm o d e l 2 问世才得以改观。 j s p m o d e l l 的体系如图3 2 所示, b r o w s e r 匾旧 图3 2j s p m o d e l l 体系 m o d e l l 是一个以j s p 文件为中心的模式,在这种模式中j s p 页面不仅负责 表现逻辑,也负责控制逻辑。专业书籍上称之为逻辑耦合在页面中,这种处理 方式,对一些规模很小的项目如:一个简单的留言簿,也没什么太大的坏处, 实际上,人们开始接触一些对自己来说是新的东西的时候,比如,用j s p 访问 数据库时,往往喜欢别人能提供一个包含这一切的单个j s p 页面,因为这样在 一个页面上他就可以把握全局,便于理解。但是,用m o d e l1 模式开发大型时, 程序流向由一些互相能够感知的页面决定,当页面很多时要清楚地把握其流向 将是很复杂的事情,当修改一页时可能会影响相关的很多页面,大有牵一发而 动全身的感觉,使得程序的修改与维护变得异常困难;还有一个闯题就是程序 逻辑开发与页面设计纠缠在一起,既不便于分工合作也不利于代码的重用,这 样的程序其健壮性和可伸缩性都不好。 为了克服m o d e l l 的缺陷,人们引入了m o d e l2 ,如图3 3 所示: 1 2 告 盎 一 武汉理工大学硕士学位论文 b r o w s e r 堕! 呈! - a c t i o n ! z 塾墅 r 启s p o n s e 图3 3m o d e l2 体系 它引入了”控制器”这个概念,控制器一般由s e r v l e t 来担任,客户端的请求 不再直接送给一个处理业务逻辑的j s p 页面,而是送给这个控制器,再由控制 器根据具体的请求调用不同的事务逻辑,并将处理结果返回到合适的页面。因 此,这个s e r v l e t 控制器为应用程序提供了一个进行前后端处理的中枢。一方 面为输入数据的验证、身份认证、日志及实现国际化编程提供了一个合适的切 入点;另一方面也提供了将业务逻辑从j s p 文件剥离的可能。业务逻辑从j s p 页面分离后,j s p 文件蜕变成一个单纯完成显示任务的东西,这就是常说的 e w 。而独立出来的事务逻辑变成人们常说的m o d e l ,再加上控制器c o n 仃o l l e r 本身,就构成了m v c 模式。实践证明,m v c 模式为大型程序的开发及维护提 供了巨大的便利。 1 3 卜匡 可 薰一 武汉理r 大学硕十学位论文 第4 章s t 瑚t s 框架 s n u t s 是一个基于j 2 e e 平台的m v c 框架,有助于开发人员更加快速和 容易地建立易于扩展和维护的j 2 e ew 曲应用程序。s t n n s 依赖大多数开发人 员已熟知的标准技术比如j a v a b e 目、s e l e t 以及j a v as e r v e rp a g e ( j s p ) 。 通过基于标准的技术,“填空式”的软件开发方法,极大的节省了时间,所以说 s 仃u t s 是一个非常不错的应用框架吼 4 1 框架概念 s 虹u i s 是一个w 曲框架,那么先来看看什么是框架。框架概念并不是很新 了,伴随着软件开发的发展,在多层的软件开发项目中,可重用、易扩展的。 而且是经过良好测试的软件组件,越来越为人们所青睐。这意味着人们可以将 充裕的时间用来分析、构建业务逻辑的应用上,而非繁杂的代码工程。于是人 们将相同类型问题的解决途径进行抽象,抽取成一个应用框架。这也就是我们 所说的框架。 j 2 e e 体系包括j s p 、s e r v l e t 、e j b 、w e bs e w i c e 等多项技术,这些技术的 出现给电子商务时代的w 曲应用开发提供了一个非常有竞争力的选择。怎样把 这些技术组合起来,形成一个适应项目需要的稳定框架是项目开发过程中一个 非常重要的步骤。 此步骤一般主要由架构设计师完成,设计师将根据项目需求,对j 2 e e 体系 中的各种技术进行筛选取舍,并考虑到开发过程中的角色分工、后期的运行维 护,以及系统扩展性等诸多因素,建立系统的框架。 一个成功的软件需要有个成功的框架,但软件框架的建立是一个复杂而 又持续改进的过程软件开发者们不可能对每个不同的项目做不同的框架,而 总是尽量重用以前的框架,或开发出尽量通用的框架方案,s t n n s 就是其中之一, s 订u 乜是目前流行的基于j 2 e e 的w e b 层应用的框架方案。 s 订u t s 是目前流行的基于j 2 e e 的w 曲层应用的框架方案。 1 4 武汉理工大学硕士学位论文 4 2s t m t s 的起源 当s e l e t 刚刚出现的时候,许多开发人员就意识到它是一项非常好的技 术。这种技术发展速度非常快,而且功能强大。但是,向浏览器不停的用p r i r l 廿n ( ) 输出h t m l 代码是一个无聊的过程。好的解决方法就是j s p 让s e r v l e t 在内 部进行这些处理。现在开发人员可以利用s e r v l e t 的最大优势就是把h t m l 代 码与j a v a 代码轻松地混合在一起。 j a v a 网站开发迅速地转变成以j s p 技术为核心的模式。它在j s p 代码中 处理所有的问题。但是,当需要解决一些流向控制和特定问题时,它显得有些 力不从心。这需要一些其它的模式来解决。 许多聪明的开发人员意识到j s p 和s e n ,l e t 可以联合起来部署网站程序。 s e n ,l e t 用来控制流,而j s p 则用来写那些令人讨厌的h t m l 代码。 到了适当的时候,用j s p 和s e l e t 一起工作成为了众所周知的m o d e l2 ( 仅仅使用j s p 技术就是m o d e l l 了) 。 于是很快许多人指出j s pm o d e l2 所遵从的经典m o d e l - e w - c o r 心o l l e r 设 计模式是从古老的s m a l l 协l km v cf m m e w o r k 中分离出来的。j a v a 网站开发人 员现在趋向于m o d e l2 和m v c 是可以互换的。在这种可互换的原则下,使用 m v c 范例进行描述s t m t s 架构,这个架构是一个较好的m o d e l2 m v c 模式。 c r a i g r m c c l 姐a l l a i l 为了给j a v a 社区提供一个m v c 框架,于2 0 0 0 年 5 月启动了s 乜1 i t s 工程,在2 0 0 1 年7 月,s t r u t s1 o 发行,从此,s t m t s 成 为最优秀的实现j 2 e ew 曲层应用的技术1 7 】。 4 3s t n l t s 的体系结构 s 洲s 的创立者希望通过对该项目的研究,改进和提高j a v as e r v e r p a g e ( j s p ) 、s e l e t 、标签库以及面向对象的技术水准。它的目的是为了减少在 运用m v c 设计模型来开发w 曲应用时所花费的时间。s t r u t s 是一种具体实现 m v c 的程序框架,它的大致结构如图4 1 所示: 武汉理工大学硕士学位论文 使用 送 图4 1s t r u t s 的结构 图4 1 基本勾勒出了一个基于s t r u t s 的应用程序的结构,从左到右,分别是 其表示层( e w ) 、控制层( c o n t r o l l e r ) 、和模型层( m o d e l ) 。其表示层使用s t n i t s 标签库构建。来自客户的所有需

温馨提示

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

评论

0/150

提交评论