(计算机应用技术专业论文)多层体系结构的web框架的研究与开发.pdf_第1页
(计算机应用技术专业论文)多层体系结构的web框架的研究与开发.pdf_第2页
(计算机应用技术专业论文)多层体系结构的web框架的研究与开发.pdf_第3页
(计算机应用技术专业论文)多层体系结构的web框架的研究与开发.pdf_第4页
(计算机应用技术专业论文)多层体系结构的web框架的研究与开发.pdf_第5页
已阅读5页,还剩48页未读 继续免费阅读

(计算机应用技术专业论文)多层体系结构的web框架的研究与开发.pdf.pdf 免费下载

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

文档简介

湖北工业大学硕士学位论文 摘要 随着w e b 技术的迅猛发展和应用,以及面向对象技术、组件技术的日益发展 和成熟,w e b 应用需求日益增多,并将逐渐成为下一代软件开发的主流。 j 2 e e 架构已成为w e b 系统最常用的系统架构之一,而由于j 2 e e 的核心规范 e j b 存在很多缺陷,在一般的实际应用中显得不适用。与之相l 匕,基于j 2 e e 的轻 量级w e b 开源框架,由于其本身具有的各种优势,正在为越来越多的企业所广泛 使用。 本文对国内外w 曲架构的研究与开发现状进行简单介绍,对s t r u t s 、s p r i n g 、 持久层技术等流行的轻量级j 2 e ew e b 应用架构进行分析对比,对w e b 框架设计 中所使用的相关理论进行探讨,包括m v c 、控制反转、和面向切面编程,并提出 在实际开发中该如何使用这些架构,如何对框架进行相应扩展。 m v c 将应用程序系统分为模型视图控制器三个模块组成部分。在出现m v c 模式之前,用户界面设计通常和业务逻辑和并在一起,而m v c 模式则把它们分离 开,使各个模块相对独立,提高灵活性与复用性。基于m v c 设计模式的架构的 s t r u t s 的目标是为利用j a v a 技术开发基于m v c 模式的w e b 应用提供一个标准模 式,这些轻量级的w e b 架构除了实现m v c 设计模式外,一般还有控制反转及面 向切面编程的设计思想。控制反转就是由容器控制程序之间的关系,而非传统实 现中,由程序代码直接操控,控制反转的控制权由应用代码中转到了外部容器。 面向切面编程允许通过分离应用的业务逻辑与系统服务进行内聚性的开发,可以 通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一 添加功能的一种技术。典型的w e b 应用的另一个末端是持久层。持久性框架是一 组软件服务,将应用程序与其使用和操纵的数据源分离,透明实现了延迟加载、 事务管理、分页以及缓存管理。 此外由于w 曲的b s 架构是基于请求响应无状态连接的h t t p 协议,使得与传 统的c s 架构相比,在用户体验上有些不足。a j a x 技术的出现就是为了实现页面 的异步响应无刷新,改善客户体验。 关键词:持久层:s t r u t s :s p r i n g :设计模式 湖北工业大学硕士学位论文 a b s t r a c t a st h ed e v e l o p i n ga n dp r a c t i s i n go fw e bt e c h n o l o g ya n dt h em a t u r i t yo fo b j e c t o r i e n t e da n dc o mt e c h n o l o g y , t h ed e m a n do fw e ba p p l i c t i o ni si n c r e a s i n ga n dw e b a p p l i c a t i o nw i l lb e c o m et h em a i nf o r mo f s o f t w a r ed e v e l o p m e n t j 2 e ef l 0 a t l eh a sb e e nt h em o s tc o l t n n o n 髓i t t eo ft h ew e bs y s t e m b u te j bo f 血e c o r es p e c i f i c a t i o no fj 2 e eh a ss o m eb u g s ,i ti si n a p p l i c a b l eg e n e r a l l y i nc o n t r a c t ,s o m e o f w e bo p e ns o u r c ea n dl i g h t w e i g h tf r a l n e w o r k sb a s e do nj 2 e ea r eo e i n gu s e dw i d e l y t b i s p a d e r i n l r o d u c e s s i m p l y t h ei n t e r n a t i o r m is t a t u so f r e s e a r c h i n g m a d d e v e l o p m e n to fw e bf r a r l ef i r s t l y t h e na n a l y z e sa n dc o n t r a s t st h el i g h t w e i g h tj 2 e e w 曲f r 8 i t l e sa m o n gt h es t r u t s t h es p r i n 窑a n dt h ep e r s i s t e n c el a y e l l td i s c u s s e st h e t e l a t i o nt h e o r ya b o u tt h ew e bf l a m ed e s i g n i n g ,i n c l u d i n gm v c ,l o ca n da o pa n dg i v e s s o m ea d v i c ej 1 0 wt ou s et h e s ew e bl i a m ea n dh o wt oe ) f t e n d n l em v cs e p a r a t e st h ea p p l i c a t i o ni n t ot h r e ep a r to fm o d e l v i e wa n dc o n t r o l l e r b e f o r em v c , t h ev i e wg e n e r a l l yi n c l u d e sb u s i n e s sl o g i cm v cs e p a r a t e st h e ms ot h a t t h e ya r ei n d e p e n d e n te a c ho t h e ra n di r e p r o v et h ef a c i h t ya n dr e u s e t h et a r g e to ft h e s t m t s b a s e do nm v ci st h a to f f e rus t a n d a r dp a t t e mu s i n gj o v as o m eo fl i g h t w e i g h t w e b e - w o r ku s u a l l yi m p l e m e n ti o ca n da o p e x c e p tm :v c i o cm e a n st h a tt h e c o n t a i n e rc o n t r o lt h er e l a t i o no f t h ep r o c e d u r e b u tn o tp r o c e d u r ei t s e l fi nt r a d i t i o n a sa r e s u l t t h ec o n t l o lf i g h tr e v e r s ef r o mt h ep r o c e d u r et ot h eo u t s i d ec o n t a i n e r t h ea o p a l l o w sc o h e s i o nd e v e l o p m e n tv i ad e p a r t i n gt h ea p p l i c a t i o nb u s i n e s sl o g i ca n ds y s t e m s e r v i c e ,a n dc a l la d dd y n a m i eu n i f o r n lf u n c t i o na n dn e e d n ta m e n ds o u n dc o d eb y p r e - c o m p i l i n ga n dt h er a n t i m ed y n a m i cd e l e g a t i o n t h et y p i c a lw e ba p p l i c a t i o n sb o t t o m i st h ep e r s i s t e n c el a v e r ni sak i n do fs o f t w a r es e r v i c ea n dc o ns e p a r a t et h ea p p l i c a t i o n f r o mi t sd a t as 0 1 i c e ,a n di m p l c l e a t sl a z yl o a d i n g ,t r a n s a c t i o nm a n a g e r , p a g eh e l p e ra n d e a c hm a n a g e r i na d d i t i o n ,t h ew e bb sf r a m e w o r kb a s e do nr e q u e s t - r e s p o n da n dn o n - s t a t u s l i n k i n g sh t t pm a k e su s e r t ow a i tf o rt o ol o n gc o m p a r e i n gw i t ht r a d i t i o n a ic s f i a m w o r k t h ea p p e a r a n c eo fa j a nt e c h n o l o g yi m p l e m e n t sa s y n e h r o n i s mr e s p o n da n d h e r e f r e s he f p a g ea n di m p o v e st h ec u s t o m e re x p e r i e n c e k e y w o r d s :s t r u t s ;s p r i n g ;h i b e r n a t e ;i b a l i s ;a j a x t i 佩| :l 亡工繁火港。 学位论文原创性声明和使用授权说明 原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师指导下,独立进行研究工作所取 得的研究成果。除文中已经标明引用的内容外,本论文不包含任何其他个人或集体已经 发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在文中以明确方 式标明。本声明的法律结果由本人承担。 学位论文作者签名需网1 日期:z 甑争月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权保留 j 二向国家有关部门或机构送交论文的复印件和电子版,允日:论文被查阅和借l 划。本人授 权湖北:1 i 业大学可以将本学位论文的全部或部分内容编入有天数据库进行榆索可以采 用影印、缩印或扫描等复制手段保存和汇编本学位论文。 学位论文作者签名:裙冈y 日期:弛戽i 月f 日 指导教师签名 日期:年 知听 月日 湖北工业大学硕士学位论文 第1 章引言 近年来,随蔚w e b 技术的迅猛发展和应用,以及面向对象技术、组件技术的 日益发展和成熟,w e b 应用需求f i i 益增多涉及的领域越来越广,w e b 应用系统的 复杂性也变得越来越高,w e b 应用获得了极大的发展,并将逐渐成为下一代软件开 发的主流。 1 1w e b 系统的发展 早期的w e b 系统只能提供一些简单的静态内容,远远不能满足人们的,卜活需 要,更不用说企业上的应用了。随着w e b 技术的不断发展,使得w e b 应用不再局 限于提供一些静态的内容,甚至也不满足于提供一些简单的动态内容。多层体系 结构正是适合w e b 应用的特点而发展起来的,和传统的客户机服务器模式相比, 这种多层模式一般分为三层,“它在原有的客户机和数据库服务器之间增加了一个 中间层,称为应用服务器层,专门负责处理应用逻辑,并具有事务管理、连接缓 冲等功能,而客户机只需通过图形界面和客户进行交互”。应用服务器的存在, 使客户机变“瘦”,把负荷均匀地分配给了应用服务器,并把客户机和数据库服务 器完全隔开,彼此独立。这样,对应用逻辑的修改只需在应用服务器上一次完成, 相对客户端而言完全透明,极大地方便了应用系统的部署及维护。在很多情况下, 为了避免客户方安装额外的程序及丌发方便考虑,这个客户端采用人们经常使用 的浏览器,这也就是所谓的“浏览器朋务器”模式( b s 模式) 。将应用逻辑从另 外两层中独立出来,将更适应r 益复杂和不断变化的w e b 应用的需要。 在多层w e b 应剧系统中,“系统至少由三层体系结构组成:客户端( 洲览器) r w e b 服务器+ 应用服务器”! 。客户端采用标准的网络浏览器,方便用户访问信息:第一 层包括w e b 服务器和应用服务器,所有的显示逻辑、应用逻辑、控制逻辑都在这 一层,系统的复杂性也主要体现在这一层:数掘库服务器层存储数据信息年f l 数据逻 辑,所有与数搬_ _ f f 关的安全性控i 、完整性控制、数拼:的一敛性以及 :z 操作等 都是在该层实现的。 在三层体系结构r hj f | ,o 通过浏览器访问w e b 服务器:w e b 服务器足硅i j ;逻辑 的核心,它将信息组织成超文本,通过超文本f ,j ;记语高( i f ) 希i 超文小f 输拂议 ( t t i ) 实观与浏览搽的交1 :而应j n 服务器负d 处川j 地川逻辑,井进行j 务符明: 湖北工业大学硕士学位论文 数据库服务器负责处理数据逻辑,实现对数据库的读写操作。 通过应用服务器层,把应用逻辑从客户端和数据库服务器独立出来 者提供了一种创建、部署和维护大规模的w e b 应用系统的模块化方式 丌发复杂的w e b 应用系统。 1 2 研究现状 ,向丌发 将更适合 e j b 的模型的企业组件太过复杂,有太多的依赖关系需要包装。在实际工作中, 那种所谓“可复用”的第三方e j b 组件其实很少,而且我看到的几个例子也具有 非常大的依赖性。例如,依赖一个精心设计的数据库s c h e m a 和专有的数据库特性, 或是依赖某种特定j 2 e e 应用服务器的专有特性。 e f f b 的另一个大问题在于:它总是试图把组件模型和远程支持放到同一个标准 中,这样做有两个大问题:同时处理组件模型和远端支持增加了复杂性:而且远 程协议还在不断发展。e j b 规范最早3 个版本希望将j a v ar m i 作为一个标准的远 程协议,这种想法现在看起来不切实际。随着更多远程协议的发展,e j b 容器不可 能支持所有的协议,而e j b 又没有提供可配置的远程机制。 e j b1 0 规范是在j a v a1 2 对a p i 进行重大改进之前6 个月发布的。那时候 的j a v a 新的集合框架还未出现,s w i n g 还不是j a v a 核心的一部分,还被放在 t o m s u n j a v a s w i n g 这个包里,j a v a d o c 还不能使用f r a m e ,类加载器( c l a s s l o a d e r ) 还不是自然分为多个层次的。j 2 s e1 3 又对j a v a 进行了更为重大的改进, 例如动态代理( d y n a m i cp r o x y ) ”3 ,它使得任何接口可以被一个运行时生成的代 理所实现。有了这样的能力e j b 所采用的那种不完全匹配组件接口的实现方式看 起来更笨拙。 有经验的系统架构师倾向于只使用e j b 的一小部分。毫无争议,无状态s e ss i o n b e a n ( s t a t e l e s ss e s s i 0 i ib e a n ,s l s b ) ”是e j b 巾最确用的,然后是l i l e , g s a g e d r jv e g b e a n ( 用于异步操作) 。几乎同样毫无争议的,有状态s e s s t o nb e a n 的价值是值 得怀疑的。f - b 规范使得容器很难让有状态s e s s i o nb e a n 具有与l i r s e s k l f ,n 埘 象同样的稳定惟,这意味着在大多数场合h t t ,s e s s i o n 对象是更好的选择。e n t i t v b e a n 则町能是e i b 规范一i ,最薄弱的部分,它的性能相与差,并 1 没能解决r0 1 _ 映射中最重要的问题,m 这恰f 是人家希魁它完成的i 作。 e j b 容器话卫l ! 的事务( c o n t a in e t m a n a g e dt r ;i n s i i c t i e n ,c ) 、计j 人多数 应用来说很有价值,但要处理些复杂的事务镎删问题就显得力小从,c 、了。譬如 酏仃时个业务操作需要多个事务,如果每次1 f 务部通过一个f 入i i 洲川 湖北工业大学硕士学位论文 一个e j b 方法,这就比通过编程方式界定事务更复杂了。乐观的锁定策略也会成 为一个问题。如果我们使用声明性事务来驱动一种持久技术( 例如t o p l i n k ”1 ) 执 行乐观事务,乐观并发异常将在容器提交事务之后才出现,而此时时应用代码已 经将控制权交给了e j 8 容器,很难重新控制程序的运转。e j b 没有为这类更复杂的 场景提供良好的支持。如果使用b e a n 管理事务( b e a n m a n a g e dt r a n s a c t i o n ,b m t ) 的e j b ,则需要从j n d i 得到j t au s e r t r a n s c a t i o n 对象,然后就像在应用服务器 中运行的其他对象一样直接使用j t aa p i 。在同一个e j b 中混合b m t 和c m ,r 也是不 可能的,所以如果只有一个方法需要复杂的事务行为,所有的其它方法都必须承 担b m t 和j t a 的复杂性。 e j b 帮助证实和普及了很多有价值的想法,但这并不意味着e j b 的实现就是完 美的。我们需要的解决方案原本可以不必这么复杂这正是e j b 的轻量级替代品 出现的原由。有了过去七年的经验,以及从n e t 中学到的东西,我们现在有机会 既吸取e j b 的优秀之处又避免其缺陷。我们可以拥有s l s b 的一切长处,同时又避 免所有不必要的复杂性。基于e j b 的上述缺陷,很多专家、研究机构试图开发出 一些轻量级的、灵活的j 2 e e 框架,比如s t r u t s ,s p r i n g 等来代替传统的使用e j b 的j 2 e e 架构。 1 3 轻量级w e b 层框架 w e b 层主要是指w e b 系统中用米和用户交互的部分。处于w e b 系统的最顶端。 a p a c h e 组织的s t r u t s 框架丌始于2 0 0 0 年3 月,是“采用j a v a s e r v l e t j a v a s e r v e r p a g e s 技术,丌发w e b 应用程序f 勺肝放源码的框架”“。采用s t r u t s 能,r 发出基 于m v c ( m o d e l v i e w c o n t r o l l e r ) 设计模式的j a v aw e b 前端应用。基于s t r u t s 框 架的w e b 应用程序具有结构清晰、易于移植、易于扩展的特点。 s p r i n g 足一个解决_ 订:多在j 2 e ej l 发中常见的问题的强大框架。“s p r i n g 提 供了管理q k 务对象的一致疗法并且鼓励了注入对接口编程而不足对类编程的良好 习惯”。s p r i n g 的架构基础是基f 使用j a v a b e a n 属性的i n v e r s i o no f c o n t r o l 容器。然而,这仅仅是完整图景l 】的一部分:s p r i n g 在使用i o c 容器作为构建完关 注所有架构层的完整解决方案方面是独一尢的。s p r i n g 提供了唯们数抓访问 抽象,包括简竹和有效率的i i i ) b c 框架,极大的改进了效率并且减少了“r 能的错误。 s p r i n g 的数据访问架构还集成了i t i b e r n a le 和其他o rm a p p i n g 解决方案。s p r in g 还提供了唯一的雨务管理抽象,它能够在各种底层事务管理技术,例如i t a 或者 湖北_ t - 业大学硕士学位论文 j d b c 纸上提供一个一致的编程模型。s p r i n g 提供了一个用标准j a v a 语言编写的 a o p 框架,它给p o j o s 提供了声明式的事务管理和其他企业事务一如果你需要一还 能实现你自己的a s p e c t s 。这个框架足够强大,使得应用程序能够抛开e j b 的复杂 性,同时享受着和传统e j b 相关的关键服务。s p r i n g 还提供了可以和总体的i o c 容器集成的强大而灵活的m v cw e b 框架。 典型的w e b 应用的另一个末端是持久层( t h ep e t s i s t e n e el a y e r ) 。这里通常 是程序最容易失控的地方。开发者总是低估构建他们自己的持久框架的挑战性。 系统内部的持续层不但需要大量调试时间,而且还经常缺少功能使之变得难咀控 制,这是持久层的通病。还好有几个o r m 开源框架很好的解决了这类问题。尤其 是h i b e r n a t e 。h i b e r n a t e 为j a v a 提供了0 r 持久化机制和查询服务,它还给已 经熟悉s q l 和j d b ca p i 的j a v a 开发者一个学习桥梁,他们学习起来很方便。 h i b e r n a t e 的持久对象是基于p o j o 和j a v ac o l l e e t i o t i s 。此外,使用h i b e r n a t e 并不妨碍你正在使用的i d e 。 持久性框架中提供下列服务,让开发人员在持久性框架之上建立应用程序: 1 、提供分开数据持久逻辑与表示和业务逻辑的整洁机制: 2 、不让框架上建立的应用程序了解数据所在的数据库平台: 3 、将所有数据连接逻辑包装到数据访问对象中后,业务应用程序的开发: 4 、人员不需要知道连接的数据库平台类型,连接数据库时所需的任何安全信 息( 用户i d 与口令) 或数据库网址: 5 、抽象数据库中存储数据的物理细节和数据库中数据实体之间存在的关系。 建立在上述体系结构布局之上的应用程序不必直接对数据库发出s q l 查询, 不必知道数据的物理结构,而用数值对象访问数据库。简化开发过程,隐藏打丌 数据库连接、发出数据读取与操纵命令和事物管理的细节。 “h i b e r n a t e 对j d b c 进行了非常轻量级的对象封装,使得j a v a 程序员可以随 心所欲的使用对象编程思维柬操纵数据库”1 。b e r n a t e 可以应用在任何使用 j d b c 的场合,既可以在j a v a 的客户端程序实用,也可以在s e r v e t j s p 的w e bj 颤 用中使用:它使你可以用j a v a 机制开发持久对象一包括关联,继承,组合和j a v a 集合框架。 i q l 是一个简化的对s q l 的在( ) o 机制上的扩展,在对象和关系数据库 问提供一个桥的作用。【i i b e r n a t e 现在是1 a v a 世界中比较流行的持久层解决方案。 b e r n a t e 具有提供t t q i 。语言、透明持久性、复杂的o r m 、简单但强大的a p l 、高 性能、j 2 e e 集成、洋细文档、丌源软件的支持等等特性。 b a t is 是另外个 持久层丌源框架。使用i h a t is 提供的o r m 机制,刈、i k 务逻辑实现人员而言,面对 的是纯粹的1 a v a 对象,这一层与通过b e r n a t o 实现o i n 而苦基木一致,而对于 湖北工业大学硕士学位论文 具体的数据操作,h i b e r n a t e 会自动生成s o l 语句,而i b a t is 则要求开发者编写 具体的s o l 语句。相对h i b e r n a t e 等“全自动”o r m 机制而言,“ b a t i s 以s o l 开 发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间”“。 作为“全自动”o r m 实现的一种有益补充,i b a t i s 的出现显得别具意义。 湖北工业大学硕士学位论文 第2 章m v o 设计模式 当前的应用系统正在向多层w e b 的方向发展。设计多层w e b 应用的一个难点 是如何创建结构合理整洁的瘦客户机层。在组合e 确的外观和行为、包装表示逻 辑的同时,不能和任何业务逻辑混杂,将用户界面、流程控制和业务逻辑进行分 离,要在各层创建易于阅读、易于维护、易于扩展的代码。这就需要一个能开 发出松散耦合应用程序的解决方案:模型视图控制器( m v c , m o d e l v i e w c o n t r o 1 e r ) 设计模式”“。 2 1m v c 在传统应用程序设计中的应用 模型视图控制器( m v c ) 模式源于传统的面向对象语言s m a l i t a l k - 8 0 “,它是 第一个分开表示逻辑和业务逻辑的设计模式。m v c 引入视图( 表示层) 、模型( 数据) 和协调两者的控制器。在出现m v c 模式之前,用户界面设计通常把这些层和并在 一起,而m v c 模式则把它们分离丌,使各个模块相对独立,提高灵活性与复用性。 m v c 将应用程序系统分为三个组成部分“: l f v i e w :用户视图模块,这是用户界面部分。与w e b 应用程序一样,主管应 用程序与人之问的接口。一方面它为用户提供了输入手段,并触发应用逻辑运行: 另一方面,它又将逻辑运行的结果以某种形式显示给用户。 2 c o n t r o l l e r :流程控制模块,该部分是用户界面与m o d e l 的接l 。一方面 它解释来自于v i o w 的输入,将其解释成为系统能够理解的对象,同时它也以别用 户动作,并将其解释为对m o d e l 特定方法的调用:另方面,它处理来自于m o d e l 的事件和m o d e l 逻辑执行的结果,调用适当的v i e w 为用户提供反馈。 3 l o d el :砸务逻辑模块,这是整个模型的核心。它表示的是解决斤案空m 的真正的逻辑。它采用面向对缘的方法,将问题领域中的对象抽象为心用程序对 象。在这些抽象的对象t 一封装了对象的属性和这些对象所隐含的逻辑。 湖北工业大学硕士学位论文 v i e w ,c o n t r o l1 e r ,m o d e l 三者的动态协作关系如图2 1 所示。 - 方法调用事件调用 图2 1m v c 动态协作关系 从图中我们可以看到,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 。 2 2 m 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 这样的特殊环境fm v c 设计模式的一利,变体它把j s p 和 s e r v l e t 组件结合在一起“。在m o d e l2 中,v i e w 是应用程序的外观,山l s p 组件 实现。c o n t r 0 1l e r 则是1 1 1s e r v l e t 组件来实现,它负责处理导航流,可以调j tjm o d e 】 并且负责选择币确的i s p 页面来倒建和显示动态内容。m o d e l2 的体系结构如h2 2 所示。 湖北工业大学硕士学位论文 w e b a p p l1 c a t1o ns e r v e rd a t ar e s o l e r e e s 图2 2m o d e l 2 体系结构 m o d e l 2 的目的和m v c 一样,也是利用控制器来分离模型和视图,达到一种层 间松散耦合的效果,提高系统灵活性、复用性和可维护性。它确立了开发人员与 网页设计者的角色分工,减轻了开发人员的工作量,使得开发人员不必考虑繁琐 的网页设计,而只专心于商业事务的开发和后台处理工作。网页设计者也可以轻 松的改变程序的外观而不需要知道后端s e r v l e t 的工作方式。在实际应用中,项 目越复杂,使用m o d e l 2 的优势就越大。 2 3m v c 的优点 m v c 模式常用于以下儿个方面:分布式应用:大型应用:生命周期长的应用:界 面和后台的可移植性非常重要的地方:数据必须使用多种方法进行观察和操作的 地方:对多丌发人员支持同步、模块化,r 发:允许根据技能进行工作的分工:简化单 元测试:使用在不同应用中可重用的企业b e a n 。 通过上面的分析,可以看到使月】m v c 模式进行系统设计可以获得以f 优点: l 、设计清晰:用模型中的方法来操作它的数据和状念,很容易理解如何来 控制模型的行为。当设汁。个应用时,这种方式将使整个程序更加容易执行和维 护。 2 、模块的有效性:如果需要,任何组件 至整个模块都,r 以换进换h j ,视 图、控制器或模型的程序改变不会郜影响到其他力咖。4 :同的组件 发能够l 州时 进行。 : 、代码羽i 没i t 。的复用1 性:j “泛采j _ | 可复h j 的组件,能够降低新琐| 1 的jr 发 成小,通过对哎计的复川,使得jf 发小自l 之删巫埸j :沟通,砹训的系统蜓易f 理 _ 争一一 数 一剖 一 ;一 霉 湖北工业大学硕士学位论文 解。 4 、易于维护:控制器和视图可以随着模型的扩展而进行相应的扩展,只要 保持一种公共的接口,控制器和视图的旧版本也可以使用。 5 、功能强大的用户界面:用户界面与模型方法调用组合起来。发送给模型 的“标准”命令,都是由单个用户行为触发的。这就使得程序可以使用更加清晰 友好的界面发布给用户。 6 、允许多种用户界面的扩展:在m v c 模式中视图与模型没有必然的联系, 都是通过控制器发生关系。如果要增加新类型的用户界面,只需要改动相应的视 图和控制器即可,而模型则无需发生改动。 湖北工业大学硕士学位论文 第3 章基于m v o 模式的w e b 架构的实现 基于m v c 设计模式的架构的s t r u t s 是a p a c h e 软件基金下j a k a r t a 项目的一 部分。s t r u t s 使用者一可以将s t r u t s 框架应用在商业项目中,并自由分发s t r u t s 库,也可以将s t r u t s 组件集成到应用框架中,就像它们是自己编写的一样。 这个框架之所以叫“s t r u t s ”,是为了提醒人们记住那些支撑房屋、建筑、桥 梁、甚至踩高跷时候的基础支撑。这也是对s t r u t s 在开发w e b 应用程序中所扮演 角色的精彩描述。当建造一个建筑物时,建筑工程师使用支柱为建筑物的你一层 提供支持。同样,软件工程师使用s t r u t s 为业务应用的你一层提供支持“。 3 1基于m v c 模式的w e b 架构分析 s t r u t s 的目标是为利用j a v a 技术开发基于m v c 模式的w e b 应用提供一个标准 模式,它的应用范围极广,可以用在不同的项目,不同的行业,比如电信、电子 商务。s t r u t s 是一个高度可配置、高度扩展性的m v c 框架,人们几乎可以用它开 发任何能想到的用j a v a 技术的w e b 应用。m v c 模式的每一部分在s t r u t s 中都有相 关对应部分“”1 s t r u t s 提供了开发m v c 系统的底层支持,它采用的主要技术是s e r v l e t j s p 和定制标签库。它提供了一个方法,可以在一个w e b 应用程序中一起使用j s p 和 s e r v l e t 。它的目的是要解决完全由j s p 或完全由s e r v l e t 实现的应用程序中的固 有的问题,弥补完全由 s p 或s e r v l e t 丌发应用程序时的不足,使j s p 与s e r v l e t 完美结合。 s t r u t s 采用了j s p 和s e r v l e t 方法的最佳特性,使这两种技术可以协同工作。 s e r v l e t 是处理层,s e i 。v 1e t 接收请求,并确定如何满足那些请求,也就是说, s e r v l e t 控制输入的请求和输出的响应。如果传入s e r v | e t 的请求是一个数据库查 询请求,s e r v l e t 将把这个请求传送到个s q ,调用或类似的数据库代码l | 进行处 理,如果请求是一个包括输入信用卡号的购买请求,那么事物逻辑处理代码就接 管了。l l s p 页瓶是显示层( 桃罔) ,是用户与j 衄月】程序交互的地方。它提供输入井显 示结果。页面只负责将数据传送到s e r v l e t ,并接收和显示返回的数据。 s lf ul s 使用m v c 架构的优势应浚是很明显的。首先,它将计算和显示清楚地 分丌了,在j s p 页面【:没有出现处理过程,在s e r v l e t 或商业逻辑中没有数据格 式。这种分离的另个好处是1 a v a 程序员可以荚注j js e r v l e l 代码,| t 扎编o j 抒 湖北_ g - 业大学硕士学位论文 可以只关注于呈现数据。其次,控制器s e r v l e t 负责贝面上的所有的决定。在页 面和业务逻辑中不会出现任何决策。这就提高了一个应用程序的性能和可扩展性。 s t r u t s 的结构实现了m v c ,其巾包括一个控制器s e r v l e t 、一组j s p 页面和应 用商业逻辑。控制器将用户请求打包,并将它们导向架构中的其他对象。s t r u t s 就是一个基于m v c 设计模式的框架,如图3 1 所示: 图3 1s t r u t s 框架 图中可以看出s t r u t s 框架是一个典型的m v c 模型,a c t i o n s e r v l e t 充当控制 器的角色,j s p 充当视图的角色,a c t i o n f o r m 和a c t i o n 充当模型的角色。 a c t i o n s e r v l e t 在接到一个w e b 应用的客户请求时,会根据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 f o r m 对象。a c t i o n 在处理完毕后,可以根据a c t i o n m a p p i n g 中定义的或者 在全局转发中定义的名称将请求转发到后继的j s p 页面,实现跳转,这样一个使 用s tr u t s 框架的处理流程就结束了。 3 2 基于m v c 模式的w e b 架构的结构 吐| 于sl r u i - 采j 】了m v c 设计模式,因此它在结构上完全遵循 m o d e l 一v ie w c o n tf 0 1l e r 的觇则。“,图3 2 是s t r u t s 的一个概览: 湖北工业大学硕士学位论文 图3 2s t r u t s 概览 如图所示,来自客户浏览器( c t i e n tb r o w s e r ) 的每个h t t p 请求都创建一个 事件,w 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 i n e s sl o g i c ) 更新模型的 状态并帮助控制应用程序的流程。在s t r u t s 它是通过a c t i o n 类完成的。模型 ( m o d e l ) 表示应用程序的状态。业务逻辑对象更新应用程序的状态。视图( v i e w ) 就是一个j s p 文件。其中没有流程逻辑,没有业务逻辑,也没有模型信息,只有 标签。标签是使s t r u t s 有别于其他框架的因素之一。 1 、v i e w 层 s t r u t s 应用中的视图部分由j s p 页面组成,还提供了自定义标签库可以使用, 通过这些自定义标签可以很好地和系统的模型交互。由于在j s p 页面中引入了 s t r u t s 的h t m i ,标签库,s t f u r s 增加了具有校验、错误处理以及与模型交互等功 能的a c t i o n f o r m ,在表单被提交时a c t i o n f o r m 可以自动拾获对应的表单数据,无 颈丌发者一另做处理。s t f u t s ,十,的视图与标准的h t m i ,表单不同,页面r 没有杂乱 无章的j s p 代码,但是它却能完成更多的功能。 2 、m o d e l 层 s t r ul s 的模型部分a c i o r l 和a c t i o n f o r m 对象组成,所有的a clj o n 对象都 是开发者从s t f nl s 的a c t i o r l 类派牛的予类。a c t i o n 对象封装了具体的处理逻辑, 调用业务逻辑模块,响应结果并提交到合适的视图中。a c t i o n :o r m 对象通过定义 属性描述客,o 端表,n 数扪,j :发者u j 以利用它和臼定义标签库的结合实现对客户 寺寡 一 c t p 一一与南 湖北工业大学硕士学位论文 端的表单数据的良好封装和支持。s t r u t s 通过a c t i o n f o r m 对象实现了视图和模型 之间的交互。s t r u t s 应用中的模型可以应用任何基于j a v a 的技术实现。 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 和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 的s e r v l e t 子类,它是s h u t s 架构的核心所在, 用来接收客户端的请求。 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 m a p p i n g 对象实现了一个请求到一个具体的模型( a c t i o n 对象) 之间的映 射。a c t i o n s e r v l e t 根据用户要求决定需要的a c t i o n ,为视图提供其需要的数据 并决定要显示一个视图。 3 3 扩展基于m v c 模式的w e b 架构 s t r u t s 不但功能强大也易于扩展。你可以通过三种方式来扩展s t r u t s : 1 p l u g i n :在应用启动或关闭时须执行某业务逻辑,创建自己的p l u g l n 类。 2 r e q u e s t p r o c e s s o r :在请求处理阶段一个特定点欲执行某业务逻辑,创建 自己的r e q u e s t p r o c e s s o r 。例如:你想继承r e q u e s t p r o c e s s o r 来检查用户登录及 在执行每个请求时他是否有权限执行某个动作。 3 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 类。但是必须且只能在p 1i g i n 和r e q u e s t p r o c e s s o r 都不能 满足需求时候用。 s t r u t sv a ll d a ti o n 框架和t i le s 框架是最成功两个的s t r u t s 扩展例子。 p l u g i n 是一个须在应用启动和关闭时需被通知的模块定制资源或服务配置 包,也就是说,可以创建一个类,它实现p l u g i n 的接口以

温馨提示

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

评论

0/150

提交评论