(计算机系统结构专业论文)基于struts、spring和hibernate整合开发技术的研究与实现.pdf_第1页
(计算机系统结构专业论文)基于struts、spring和hibernate整合开发技术的研究与实现.pdf_第2页
(计算机系统结构专业论文)基于struts、spring和hibernate整合开发技术的研究与实现.pdf_第3页
(计算机系统结构专业论文)基于struts、spring和hibernate整合开发技术的研究与实现.pdf_第4页
(计算机系统结构专业论文)基于struts、spring和hibernate整合开发技术的研究与实现.pdf_第5页
已阅读5页,还剩69页未读 继续免费阅读

(计算机系统结构专业论文)基于struts、spring和hibernate整合开发技术的研究与实现.pdf.pdf 免费下载

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

文档简介

摘要 摘要 框架技术与设计模式是j 2 e e 中重要的软件重用技术,框架技术的应用提高了 软件的开发效率,增强了系统的可重用性、健壮性和可伸缩性,几乎所有框架技 术都会使用某种或多种设计模式。如何选择框架并建立适合企业应用的架构,同 时让各个应用层以松散耦合的方式彼此作用,这是值得关注和研究的。 本文对针对m v c 、s t r u t s 、s p r i n g 、h i b e m a t e 等主流框架技术进行仔细研究 之后,具体分析了各个框架在w e b 应用不同层次上所发挥的作用,提出了一个整 合s t r u t s 、s p r i n g 和h i b e r n a t e 框架技术的组合框架来进行w e b 应用开发,合理运 用了各种框架技术的优点。其中s t r u t s 负责表现层,完成页面显示、响应用户请求 等功能;s p r i n g 主要负责业务逻辑层,完成应用系统的业务逻辑与事务处理等功能: h i b e r n a t e 主要负责数据持久层,完成与数据层的交互功能。通过整合,降低了各 层之间的耦合度。解决了w e b 应用系统开发过程中由于系统结构复杂而带来的一 些问题。 最后通过把本文研究的整合框架开发技术运用到一个实际的工作流系统项目 中,验证了这种整合开发技术可以很好地满足当前企业级w e b 应用的功能需求, 实现了系统结构的强内敛,弱耦合,并且具有很好的扩展性和可移植性。 关键字:m v c 、s t r u t s 、s p r i n g 、h i b e r n a t e 、a o p 、依赖注入 目录 a b s t r a c t f r a m e w o r k sa n dd e s i g np a t t e r n sa r ev e r yi m p o r t a n ts o f t w a r er e u s e dt e c h n o l o g i e s i nj 2 e ef r a m e w o r k u s i n gf r a m e w o r k st e c h n o l o g yc a nr a i s et h ee f f i c i e n c yo fs o f t w a r e d e v e l o p m e n ti m p r o v et h er e u s e n e s s ,r o b u s t n e s sa n dr e t r a c t i l i t yo fs y s t e m a l m o s ta l l f r a m e w o r k su s eo n eo rm o r ed e s i g np a t t e r s h o wt oc h o o s ef r a m e w o r k st ob u i l dt h e a p p r o p r i a t ea r c h i t e c t u r ef o re n t e r p r i s ea p p l i c a t i o n h o wt om a k ee a c ha p p l i c a t i o nl a y e r i n t e r a c ti nl o o s ec o u p l i n gw a y i t sw o r t h yt oc o n c e r na n dr e s e a r c ht h e s eq u e s t i o n s t h i sp a p e rf i r s td i dr e s e a r c h e do nt h em o s tp o p u l a rf r a m e w o r k sw h a ti sm v c , s t r u t s ,s p i n g ,a n dh i b e r n a t e t h e n ,a n l a y s e de a c hf r a m e w o r k s sf u n c t i o ni nd i f f e r e n t w e b a p p l i c a t i o nl a y e r w ed e s i g nan e wd e v e l o p i n gp a t t e r n sf o rw e ba p p l i c a t i o nu s i n ga a s s e m b l ef r a m e w o r k sw h i c hi n t e g r a t et h es t r u t s ,s p r i n ga n dh i b e r n a t e ,t h a tm a k ef u l l u s eo fe a c hf r a m e w o r k s a d v a n t a g e s i nt h i s p a t t e r s ,s t r u t st a k ec h a r g eo ft h e p r e s e n t a t i o nl a y e r , c o m p l e t i n gp a g ed i s p l a y i n ga n da n s w e r i n gu s e r sr e q u i r e m e n t s , s p r i n gt a k ec h a r g eo fb u s i n e s sl o g i cl a y e r , c o m p l e t i n gt h eb u s i n e s sl o g ica n da f f a i r m a n a g e m e n to fa p p l i c a t i o np r o g r a m s h i b e r n a t et a k e sc h a r g eo fd a t ap e r s i s t e n c el a y e r , c o m p l e t i n gi n t e r a c t i v ew i t ht h ed a t a b a s e t h r o u g ha s s e m b l i n gt h et h r e ef r a m e w o r k s ,w e c a nd e p r e s st h ec o u p l i n go fe a c hl a y e ra n ds o l v es o m ep r o b l e m sb r o u g h tb yt h eh i 曲 c o m p l e x i t yo ft h es y s t e ms t r u c t u r e t h r o u g ha p p l yt h ea s s e m b l i n gd e s i g np a t t e m st oa na c t u a lw o r k f l o wt e c h n o l o g y s y s t e mp r o j e c t ,w ev a l i d a t e dt h i sa s s e m b l i n gd e v e l o p i n gt e c h n o l o g yc a ns t r o n g l ys a t i s f y t h ef u n c t i o nr e q u i r e m e n tf o rt h ee n t e r p r i s e sw e ba p p l i c a t i o n , w h i c hr e a l i z e dt h es t r o n g c o h e s i o na n dl o o s ec o u p l i n go fs y s t e ma r c h i t e c t u r e ,a l s op r o v i d e dag o o da b l i l i t yo f e x p a n s i b i l i t ya n dt r a n s p l a n t a t i o n k e y w o r d s :m v c 、s t r u t s ,s p r i n g ,h i b e r n a t e ,a o p ,d e p e n d e n c yi n j e c t i o n 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名: 受鱼喀 日期:沙7 年p 月尼日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 日期:o ,年厂。月产日 第一章绪论 第一章绪论 j 2 e e 平台为企业级应用开发提供了多层的分布式应用模型、组件重用策略、 一致化的安全模型以及灵活的事务控制特性,加快了企业应用的设计与开发,可 以快速容易地建立融合了i n t e r n e t 技术,尤其是w e b 技术的n 层( n 西e f s ) 结构 的分布式企业应用,较好地解决了c s 结构所固有的可扩充性差、可维护性差、 安全性差、部署麻烦等弊端。另一方面,由于它是一个开放的标准,所以保证所 开发出来的平台是独立的、基于组件的j 2 e e 解决方案不会束缚在任何一个厂商的 产品和a p i 上i l j 。j 2 e e 技术已经获得了个大信息技术厂商的广泛支持,并已成为 当今企业级应用开发的主流平台。 随着软件系统的复杂程度增加,软件系统的架构( a r c h i t e c t u r e ,体系结构) 设计显得越来越重要,工业化的软件复用已经从通用的类库进化到面向领域的应 用框架。框架是软件系统的设计、开发过程中的一个概念,它强调对已完成的设 计、代码的重复使用,并且一个框架主要适用于现实某一个特定类型的软件系统【2 】。 框架复用可大大提高软件的开发效率,保证软件质量【2 】。 1 1研究背景 j 2 e e 多层架构是目前流行的w e b 应用开发架构之一,己成为解决电子商务和 企业级应用的标准平台。但这个平台不能满足所有需求特点,其中的业务逻辑层 的解决方案e j b 机制存在一些不足,其架构方式本身有一些问题,而且e j b 的机 制是一种对代码和设计强侵入性的规范,使业务组件移植不是很方便。e j b 制定了 很多的接口和编码规范,要求实现者遵守,这样就导致了业务逻辑移植困难,成 本较高。 伴随着软件开发技术的发展,在多层的软件开发项目中,可复用、易扩展的, 而且是经过良好测试的软件组件,越来越为开发者所青睐。这意味着开发人员可 以用充裕的时间用来分析、构建业务逻辑的应用,而非繁杂的代码工程。于是开 发人员将相同类型问题的解决途径进行抽象,抽取成一个个应用框架。用这些框 架构建的分布式应用程序,完美地实现了应用程序高内聚、低耦合、高弹性、易 维护的优点。其中最受人们关注的是s t r u t s 、s p r i n g 和h i b e r n a t e 框架。 电子科技大学硕士学位论文 s t r u t s 是m v c 模式的实现框架口j ,它由一系列框架类、辅助类和定制的j s p 标记库构成,为w e b 应用开发提供一个强大的、通用的w e b 应用框架,从整体上 减轻构造企业w e b 应用的负担。s p r i n g 是一个服务于所有层面的应用框架,允许 开发者根据需要选择使用它的部分模块【引。s p r i n g 主要基于i o c ( i n v e r s i o no f c o n 仃0 1 控制反转) 和a o p ( a s p e c to r i e n t e dp r o g r a m m i n g ,面向方面编程) ,很容易实现 b e a n 的装配和t r a n s a c t i o nm a n a g e m e n t ( 事务管理) 等特性;同时它对不同的数据 访问技术提供统一的接口。h i b e r n a t e 框架是一个面向j a v a 环境的对象关系数据库 映射工到引。它不仅可以管理j a v a 类到数据库表的映射,还提供数据查询和获取 数据的方法,它可以大幅度减少开发时人工使用s q l 和j d b c 处理数据的时间。 它可以在应用e j b 的j 2 e e 架构中取代c m p ( c o n t a i n e r - m a n a g e dp e r s i s t e n c e ) ,完 成数据持久化的重任【6 】。 随着系统规模的日益复杂,为了快速提高开发效率,将一些优秀的框架进行 整合以适应不同的应用需求已成为目前系统开发中流行的方向之一。 1 。2 本课题研究的内容和意义 框架是特定领域基于架构的,解决某类应用问题的半成品,是大粒度的软件 复用【6 】,它为w e b 应用开发提供了一个能够使用的架构模板和软件包,让开发者 从编码中解脱出来,不必一切从头开始,自己来完成,只需将注意力集中在业务 逻辑上,从而减轻了开发者处理复杂问题的负担,提高了工作效率;其次在应用 和分析框架的基础上,可以对其进行改进和扩展,以适应实际的需求。因此框架 也为扩展和维护系统奠定了基础【_ 丌。 论文工作在于重用和再包装现有的流行框架( h i b e r n a t e 、s p r i n g 、s t r u t s ) ,使 其形成一个具有一定集成度的软件开发架构;并在某些方面作一些创新,延伸出 一些新的特性。这样将减少开发过程中各个领域间的整合所需工作量,降低开发 的风险。就架构的设计思想在多层w e b 应用中的作用,本文作较深入的探讨,为 实现高效、灵活的多层w e b 体系结构的应用提供一种新的思路及方法。并通过一 个工作流系统项目的实现来说明整合多种架构以实现w e b 应用开发的一般步骤。 本文研究的意义在于通过整合j 2 e e 多层架构中w e b 层、业务层和持久层的三 个优秀的框架来进行w e b 应用的开发,克服了j 2 e e 架构的w e b 应用解决方案中 存在的一些不足,充分发挥每个框架的优势,实现了: 复用设计,以简化开发的复杂性。 2 第一章绪论 复用代码,减少编码和测试时间,提高工作效率。 提高系统的可扩展性、可维护性和可移植性。 降低层间耦合度。 这种整合框架有很强的生命力,虽然这种整合框架的思想很好,但是发展的 时间较短,还不成熟,与j 2 e e 架构相比,还有不足之处,所以应该与j 2 e e 架构 的优势部分结合才能产生更好的效果。 1 3 论文结构 第一章绪论,本章介绍本课题的研究背景,研究内容及意义和论文结构。 第二章m v c 模式和s t r u t s 框架技术,本章首先了m v c 模式的特点,包括 m v c 模式组件,m v c 模式的优缺点,m v c 设计模式的实现。接下来介绍了实现 m v c 模式的s t r u m 框架,s t r u t s 框架中的核心组件,并阐述利用s t r u t s 框架开发的 工作流程。最后对s t r u t s 框架的优缺点做了总结。 第三章s p r i n g 框架技术,本章首先介绍了s p r i n g 框架的地特性,以及s p r i n g 框架体系中各个模块的功能与结构,接下来讨论了s p r i n g 中的特色技术,反转控 制和依赖注入的设计思想,并详细说明了依赖注入实现的具体方法:接口注入、 设值注入、构造子注入。本章还介绍了s p r i n g 框架中另一个重要概念面向方面编 程( a o p ) 技术,讨论了怎样在s p r i n g 中实现并合理使用a o p 技术,最后对s p r i n g 框架的优缺点做了总结。 第四章持久层技术与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 i b e r n a t e 框架中主要类和基础配置,讨论并实现 了h i b e r n a t e 中o r 映射机制,对实体映射和数据关联技术也作了阐述,最后对 h i b e r n a t e 框架的优缺点做了总结。 第五章基于s t r u t s + s p r i n g + h i b e m a t e 多架构的整合开发技术,本章将针对前 面讨论的几种框架技术的优缺点,提出一种多架构整合开发的设计思路。首先介 绍了目前商业w e b 应用的体系框架,然后针对不同层次功能进行分析,并根据不 同层次的特点提出框架技术的选择,接下来分别讨论并实现了s t u r t s 框架与s p r i n g 框架的整合和s p r i n g 框架与h i b e r n a t e 框架的整合。 第六章工作流系统设计,本章通过把本文研究的整合框架开发技术运用到一 电子科技大学硕士学位论文 个实际的工作流系统项目中,验证了这种整合开发技术可以很好地满足当前企业 级w e b 应用的功能需求,实现了系统结构的强内敛,弱耦合,并且具有很好的扩 展性和可移植性。 第七章总结和展望,对全文工作进行总结,列举了论文所作的主要工作,并 对下一步的研究做了展望。 4 第二章m v c 模式简介和s t r u t s 框架技术 第二章m v o 模式简介和s t r u t s 框架技术 将软件模式引入软件设计和开发过程的目的在于充分利用已有的软件设计开 发经验。这是因为设计模式通常是对某一类软件设计问题可重用得解决方案。优 秀的软件设计师都很清楚不是所有问题都需要从头解决。他们更愿意重复以前曾 用过的解决方案。设计模式的最终目标是帮助人们利用熟练的软件设计师的集体 经验,来设计更加优秀的软件。在软件设计领域中,每一个设计模式都系统地命 名、解释和评价面向对象系统中的一个重要的和可重用得设计。这样,只要搞清 楚这些设计模式,就可以完全或者说很大程度上吸收了那些蕴含在模式中的宝贵 经验。从而对软件体系结构有很大程度上的把握f 7 】。 m v c 模式简介 m v c 是m o d e l v i e w c o n t r l l o r 的缩写,即模式视图一控制器。m v c 是x e r o x p a r c 在八十年代为编程语言s m a l l t a l k 8 0 发明的一种软件设计模式,至今已被广 泛使用。在最近几年被推荐为j 2 e e 平台的设计模式,受到越来越多开发者的欢迎。 2 1 1m v g 组成部件 m v c 模块结构图如图2 - 1 所示: - , 事件 图2 - 1m v c 模块结构图 5 电子科技人学硕士! 学位论文 下面对m v c 模型的各个部分作简单的介绍: 视图( v i e w ) :代表用户交互界面,对于w e b 应用来说,可以概括为h t m l 、 j s p 、j s f 等界面,但叉可能为x h t m l 、x m l 和a p p l e t 等。随着应用的复杂性和 规模性,界面处理也变得具有挑战性。一个应用可能有很多不同的视图,m v c 设 计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不 包括在视图中的业务流程的处理【8 】。业务流程的处理交给模型( m o d e l ) 来处理。 比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输 入数据和请求传递给控制和模型。 模型( m o d e l ) :就是业务流程状态的处理以及业务规则的制定。业务流程的 处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处 理结构。业务模型的设计可以说是m v c 最主要的核心。传统的e j b 就充当模型 的角色,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有 的组件,但它不能作为应用设计模型的框架。它仅仅告诉你按这种模型设计就可 以利用某些技术组件,从而减少了技术上的困难 8 1 。对一个丌发者来说,就可以专 注于业务模型的设计。m v c 设计模式告诉我们,把应用的模型按一定的规则抽 取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计方法,而只告 诉你应该组织管理这些模型,以便于模型的重构和提高重用性。 控制( c o n t r o l l e r ) :可以理解为从用户接受请求,将模型与视图匹配在一起, 共同完成用户的请求。划分控制层的作用也是很明显的,它清楚告诉你,它就是 一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请 求,控制层并不作任何的数据处理,例如,当用户点击一个链接,控制层接受请 求后,并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选 择符合要求的视图返回给用户【8 】。因此,一个模型可能对应多个视图,一个视图可 能对应多个模型。 2 1 2m v c 模式的优缺点 1 m v c 的优点 一个模型在运行时可以同时建立和使用多个视图,提供模型代码的重用性。 这样减少了代码的复制和维护量,一旦模型发生改变,也易于维护。 允许更换视图和控制器对象,而且可以根据需求动态地打开或关闭,甚至在 运行期间进行对象替换。 模型的可移植性。模型独立于视图和控制器,把一个模型独立地移植到新平 6 第二章m v c 模式简介和s t r u t s 框架技术 台工作,只需在新平台上对视图和控制器进行修改,以此构造良好的低耦合组件。 潜在的框架结构,可以基于此模式丌发应用程序的框架。 它还有利于软件工程化管理,由于不同的层各司其职,每一层不同的应用具 有某些相同的特征,有利于通过工程化、工具化产生管理程序代码。 2 m v c 的缺点 增加了系统结构和实现的复杂性。对于简单的界面,严格遵循m v c ,使模型、 视图与控制器分离,会增加结构的复杂性,降低运行效率。 视图与控制器之间过于紧密的连接。视图与控制器是相互分离,但却是联系紧 密,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了它们 的对立应用。 视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次 调用才能获得足够的数据。对未变化数据不必要频繁访问,也将损害操作性能。 目自订,一般高级的界面工具或构造器不支持m v c 模式,改造这些工具适应 m v c 需要和建立分离的部件代价是很高的。从而造成使用m v c 的困难。 由此可见,m v c 并不适合所有软件丌发,对于存在大量用户界面、业务逻辑 复杂的大型应用程序,m v c 有利于提高健壮性和重用性。但不适合小型应用程序 的丌发例。 2 3 ,3m v c 设计模式的实现 s u n 公司先后制定了两种规范:j s p 模型一和j s p 模型二。 模型 模型一被称为“以j s p 为中心 的m v c 设计模式,是j s p 和j a v a b e a n 技术 的结合【1 0 1 。j s p 页面独自响应请求,处理后把结果返回给客户端。所有的数据都通 过j a v a b e a n 处理,j s p 页面同时实现显示、业务逻辑和流程控制功能,从而快速 完成应用开发。 因为该模型简单灵活,实现起来很方便。所以对于快速小规模应用开发比较有 优势。但从工程角度考虑,不足之处有两点:一是应用的实现依赖过程,一组j s p 页面实现一个业务流程,如需改动,必须进行多处修改,不利于扩展和更新;二 是应用不是建立在模块上,业务逻辑和表示逻辑混合在j s p 页面中,没有进行抽 象和分离,不利于应用系统业务的重用和改动。因此,模型一只是在一定程度上 实现了m v c 设计模式。其结构如图2 2 所示: 7 电子科技人学硕+ 学位论文 图2 - 2 模型一结构图 模型二 模型二是模型一的改进,完全基于j 2 e e 体系结构。模型二又被称为“以s e r v l e t 为中心”的m v c 设计模式,使j s p 、j a v a b e a n 和s e r v l e t 技术的结合,充分利用 了j s p 和s e r v l e t 两种技术原有的优点,其结构如图2 3 所示 图2 - 3 模型二结构图 模型二实现了m v c 设计模式,使用一个或多个s e r v l e t 作为控制器,在模型 层中,通过j a v a b e a n ( 或e j b 组件) 实现应用的业务逻辑;在视图层中,由j s p 页面产生应用表;在控制层中,s e r v l e t 作为控制其处理来自w e b 浏览器的所有请 求,然后返回h t t p 响应信息。从而实现了m v c 的分离机制,弥补了模型一的 不足。 模型二相对于模型一,可以进一步减少j s p 页面中的业务逻辑,从而比较彻 底地实现业务逻辑和表现逻辑的分离,加深了组件的分工,方便了开发角色的划 第二章m v c 模式简介和s t r u t s 框架技术 分,可以充分利用_ 丌发团队中的网页设计人员和j a v a _ 了于发人员,提高了丌发效率。 2 2s t r u t s 框架体系 s t r u t s 是一个丌源框架,包含了一系列相互的类、s e r v l e t 和j s p 标记。s t r u t s 框架是基于m v c 框架开发w e b 应用程序的具体应用。使用s t r u t s 框架可以将商业 逻辑、控制和数掘显示功能模块区分丌来,这样对其中一个模块的改动不会影响 到其它模块【1 1 1 。使用这一框架。开发人员可以分别集中开发商业逻辑模块、应用 过程控制模块和数据显示模块,而不用担心这三个模块的耦合问题。 从m v c 的角度来分析s t r u t s 框架中的各个组件,如图2 4 所示,a c t i o n s e r v l e t 负责接收来自浏览器的请求,并将h t t p 请求转发到框架中的其它对象,包括j s p 页。在初始化时,它对配置文件s t r u t s c o n f i g x m l 进行分析,然后根据其中定义的 映射转发相应的h t t p 请求【1 2 】。在映射中必须指明请求的路径和对象类型。a c t i o n 对象请求进行处理并将响应返回到客户,或者指明控制应该转发到何处。a c t i o n 对象被链接到应用程序的a c t i o n s e r v l e t ,因此可以访问它的方法。在进行控制转移 时,一个对象能够将一个或多个共享对象放置到请求、会话或应用的作用域,从 而间接地转发它们。 图2 - 4s t r u t s 框架 在图2 4 所示s t r u t s 框架中,包括了客户端浏览器、控制器、业务逻辑、模型 和视图五个组成部分。 客户浏览器( c l i e n tb r o w s e ) :来自客户端浏览器的每个h t t p 请求创建一个 9 电子科技人学硕士学位论文 事件。、e b 容器将用一个h t t p 响应作出回应。 控制器( c o n t r o l l e r ) :控制器接受来自浏览器的请求,并决定将这个请求发往 何处。就s t r u t s 而言,控制器是以s e r v l e t 实现的一个命令设计模式。s t r u t s c o n f i g x m l 文件配置控制器。 业务逻辑( b u s s i n e s sl o g i c ) :s t r u t s 框架本身没有提供模型组件,一般来说, 普通的j a v a 对象、e j b 组件、j a v a b e a n 组件都可以作为s t r u t s 应用程序的模型, 这些模型是由控制器操作和处理的,它对控制器和视图一无所知。业务逻辑更新 模型的状态,并帮助控制应用程序的流程。就s t r u t s 而言。这是通过作为实际业务 逻辑包装的a c t i o n 类完成的。 模型( m o d e l ) :模型表示应用程序的状态。业务对象更新应用程序的状态。 a c t i o n f o r mb e a n 在会话级或请求级表示模型的状态,而不是在持久级。j s p 文件 使用j s p 标记读取来自a c t i o n f o r mb e a n 的信息。 视图( v i e w ) :视图就是一个j s p 文件。其中没有流程逻辑,没有业务逻辑, 也没有模型信息,没有标记。标记是使s t r u t s 有别于其它框架因素之一。 2 3s t r u t s 的工作流程 对于采用s t r u t s 框架的w e b 应用,在w e b 应用启动时就会加载并初始化 a c t i o n s e r v l e t ,a c t i o n s e r v l e t 从s t r u t s c o n f i g x m l 文件中读取配置信息,把它们存放 到各种配置对象中,例如a c t i o n 的映射信息存放到a c t i o n m a p p i n g 对象中。 当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 实例,如果不存在,就返回用户请求路 径无效的信息。 如果a c t i o n f o r m 实例不存在,就创建一个a c t i o n f o r m 对象,把客户提交的表 单数据保存到a c t i o n f o r m 对象中。 根据配置信息决定是否需要表单验证。如果需要验证,就调用a c t i o n f o r m 的 v a l i d a t e ( ) 方法。 如果a c t i o n f o r m 的v a l i d a t e ( ) 方法返回n u l l 或返回一个不包含a c t i o n m e s s a g e 的a c t i o n e r r o r s 对象,就表示表单验证成功。否则就表示表单验证失败,此时 a c t i o n s e r l e t 会根据配置信息中的i n p u t 属性决定跳转的组件。 a c t i o n s e r l e t 根据a c t i o n m a p p i n g 实例包含的映射信息决定将请求转发给哪个 a c t i o n 。如果相应的a c t i o n 实例不存在,先创建实例,然后调用其e x e c u t e ( ) 方法。 第二章m v c 模式简介和s t r u t s 框架技术 a c t i o n 的e x e c u t e ( ) 方法返回一个a c t i o n f o r w a r d 对象,a c t i o n s e r v l e t 再把客户 请求转发给a c t i o n f o r w a r d 对象指向的j s p 组件。 a c t i o n f o r w a r d 对象指向的j s p 组件生成动态网页,返回给客户。 2 4s t r u t s 框架的优缺点 1 s t r u t s 框架的优点 符合h 兀p 惯例 s t r u t s 设计是以标准的h ,r r p 协议的r e q u e s t r e s p o n s e 模式,对于许多开发人 员来说,很熟悉这种模式。 标准的日志记录 s t r u t s 能够使用应用服务器的日志系统,不需要其它类库来配置解析,这样对 于开发人员来讲使用简单。 通过x m l 配置文件集中配置 s t r u t s 大部分操作都是通过配置s t r u t s c o n f i g x m l 来实行的,包括上下文、异常 处理、f o r m b e a n 、映射a c t i o n 等工作都是通过配置文件设置的。系统运行时,系 统动态地解释配置文件。 资源文件支持多语种 支持多种资源文件,资源文件中各种字符串可以按类的路径进行命名,在程 序中很容易得到,多语种程序通过不同的资源文件就可以实现。系统中的提示信 息、出错信息以及动态显示的信息都可以在资源文件中配置。 轻量级 s t r u t s 体系结构的核心组件包数量不多,但功能强大,开发人员很快就能够掌 握。这个s t r u t s 大约有1 5 个包,近2 0 0 个类所组成。系统的核心组件包包括:a c t i o n 、 a c t i o n s 、c o n f i g 、u t i l 、t a g l i b 、v a l i d a t o r 等 完备的标签扩展服务 除了框架本身的特殊资源外,s t r u t s 包含了一系列的常规用途的标签扩展可以 满足所有的j s p 标签方面需要。 源代码文档齐备 s t r u t s 的源代码文档非常详细,同时给开发人员提供更为详细的高水平的开发 指南。 广泛的厂商支持 电子科技大学硕士学位论文 因为s t r u t s 的成熟和广泛使用,越来越多的j 2 e e 集成开发工具已经包含对 s t r u t s 的支持。 2 s t r u t s 框架的缺点 耦合性强。业务逻辑必须在a c t i o n 中进行调用和处理,一般包括新增a c t i o n 、 修改a c t i o n 和删除a c t i o n ,一旦业务逻辑结构有所变动,涉及到三个a c t i o n 类代 码修改,维护量大,w e b 层和业务逻辑层存在过强的耦合性。 缺乏对持久数据的操作与管理。通过对s t r u t s 框架进行分析,可以看到s t r u t s 并未考虑对持久数据的操作与管理,一般是通过s t r u t s + d a o 的方式来解决持久层 的处理,然而在数据模型复杂的应用系统中,直接利用j d b c 编程来实现持久化 框架不仅是需要开发者具有相应的专业知识同时还会造成代码的冗余,开发代价 也会随之变高。除此之外,在业务层的处理上,如果业务层的处理分布在用户接 口或持久层里,不难想象这会导致应用程序的紧耦合,同时随着时间推移代码将 很难维护。 事务管理的不便。s t r u t s 没有自己特有的事务管理机制,以前在事务管理方面 通常都是采用e j b 容器来管理,但是e j b 容器存在许多缺点,例如:e j b 代码不 可以脱离e j b 容器;e j b 容器启动缓慢;部署e j b 十分麻烦,每个e j b 都需要多 个j a v a 文件,在正式部署之间可能还需要首先完成代码生成和编译;,应用代码只 能运行在e j b 容器这一个环境中;e j b 容器不能管理细粒度对象等等【1 3 】。 1 2 第三章s p r i n g 框架技术 第三章s p r in g 框架技术 3 1 s p rin g 框架简介 s p r i n g 是一个服务于所有层面的应用框架,其目标是将各种专用框架整合成一 个连贯的整体架构。s p r i n g 框架是一个流行的开源产品,它的作用是为j 2 e e 应用 常见的问题提供简单、有效的解决方案【1 4 】。其主要构思来源于r o dj o h n s o n ( ( e x p e r t o n e o n o n ej 2 e ed e s i g na n dd e v e l o p m e n t ) ) 。该框架是一个轻量级j 2 e e 框架实现。 相对传统的s u n 的j 2 e e ,具有维护容易、分层清楚、速度快、代码少、支持最新 的o r m 技术与a o p 概念等优点【l5 1 。s p r i n g 服务于所有层面的应用程序,提供了 b e a n 的配置基础,a o p 的支持,j d b c 的提取框架,抽取事务支持等。s p r i n g 框 架还有效组织了系统中中间层对象,消除了组件对象创建与使用耦合紧密地问题, 同时消除了使用各种各样格式的属性定制文件的需要,在整个应用和工程中,可 以通过一种一致的方法进行配置。其核心意图就是组织业务对象。为企业级应用 提供了一个轻量级的解决方案。 概括地说s p r i n g 是一个轻量级的反转控制( i n v e r s i o no fc o n t r 0 1 ) 和面向方面 ( a s p e c t o r i e n t e d ) 的容器框架,以下是它的特性介绍: 轻量级( l i g h t w e i g h t ) s p r i n g 的轻量级主要表现在它的体积与管理开销上,更重要的是s p r i n g 是“无 干扰”的;在典型的s p r i n g 应用程序中的对象可以不依赖于s p r i n g 特殊类之上。 即组件并不需要实现框架指定的接1 2 1 ,因此可以轻松地将组件从s p r i n g 中脱离, 甚至不需要任何修改。这样无疑提高了代码的重用性。 控制反转( i n v e r s i o no f c o n t r 0 1 ) 控制反转技术是s p r i n g 用来促进代码的解耦合。控制反转( i o c ) 就是由容器 控制程序之间的关系,而非传统实现中,由程序代码直接操控。在应用i o c 时, 对象是被动的创建或为自己寻找依赖对象。其实现方法与e j b 3 0 有所不同。 面向方面( a s p e c t o r i e n t e d ) 面向方面编程( a o p ) 提供从另一个角度来考虑程序结构以完善面向对象编 程( o o p ) ,面向对象将应用程序分解成各个层次的对象,而a o p 将程序分解成 各个方向。这使得可以模块化诸如事务管理等这些横切多个对象的关注点。 电子科技大学硕士学位论文 容器( c o n t a i n e t ) s p r i n g 是一个包含并管理着应用对象的生命周期和结构的容器。每个b e a n 如 何被创建、之间如何联系起来,都可以通过配置来实现控制。但是它又不像传统 的重量级e j b 容器那么繁琐和巨大。 架构( f r a m e w o r k ) s p r i n g 的架构在应用于复杂的应用系统时,都是由简单简单的组件构成的。应 用对象在x m l 文件中被声明。s p r i n g 也提供了很多基础功能( 事务管理、持久性 框架集成等等) ,将应用逻辑的开发独立出来。所有这些特性都能使代码更加清晰, 更加容易管理和测试。在整个s p r i n g 框架中还有着一个个富于变化的子框架。下 面就主要介绍一下s p r i n g 框架的结构。 3 2 s p r in g 框架的体系结构 s p r i n g 框架由七个定义好的模块组成n 引,如图3 1 所示,作为一个整体来看, 这些模块足以应付你所需要开发的企业级应用系统的要求。但是同时在开发时, 你又不需要将s p r i n g 框架中的这些基本模块全部加入系统中。开发人员可以任意 选择适合系统应用的模块并忽略其它的模块。 图3 - 1 s p r i n g 框架体系结构 所有的s p r i n g 框架都是建立在c o r e 容器的基础上的,这个容器定义了如何创 建、配置和管理b e a n 。在配置应用程序的时候,将会无意间调用到这些类。但是 1 4 第三章s p r i n g 框架技术 作为开发者,最关心的是那些提供服务层容器的模块,这些模块在框架中建立应 用服务。下面就分别介绍一下各模块的功能与结构: c o r e 容器 c o r e 包是框架的最基础部分,它提供依赖注入特性来使你可以管理b e a n 容器 功能。它的核心是b e a nf a c t o r y ,顾名思义,负责创建并维护b e a n 实例,从名字 也可以看出它利用的是“工厂”设计模式。 上下文应用模块( s p r i n gc o n t e x t ) 构建与b e a n 包上的c o n t e x t 包,提供了一种框架式的b e a n 访问方式,有些像 j n d i 注册。c o n t e x t 包的特性得自于b e a n 包,并添加了文本消息的发送。 d a o 包( s p r i n g d a o ) d a o 包提供了j d b c 的抽象层,它可消除冗长的j d b c 编码和解析数据库厂 商特有的错误代码。该包也提供了一种方法实现编程性和声明性事务管理。不仅 仅是针对实现特定接口的类,而且对所有的p o j o ( p l a i no l dj a v ao b j e c t s ) 。 o r m 包( s p r i n g o r _ m ) o r m 包为流行的关系对象映射a p i s 提供了集成层,包括j d o ,h i b e r a n t e 和 i b a t i s 。通过o r m 包可与所有s p r i n g 提供的其它特性相结合来使用这些对象关系 映射,如前面提到的简单声明性事务管理。 a o p 包( s p r i n g a o p ) : s p r i n g 的a o p 包提供了丰富的面向方面的编程实现方法。这个模块允许定义 方法拦截器和切点,来全面彻底地将不同功能的模块程序实现代码解耦合。 w e b 包( s p r i n gw e b ) : s p i r n g 的w 曲包建立于上下文应用模块的基础上,它提供了基本的面向w 曲 的综合特性。除此之外,它还包括了支持单独的m u l t i p a r t 功能,使用s e r v l e t 监听 的c o n t e x t 的初始化和面向w e b 的a p p l i c a t i o nc o n

温馨提示

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

评论

0/150

提交评论