(计算机软件与理论专业论文)基于mvc设计模式的struts框架的研究与应用.pdf_第1页
(计算机软件与理论专业论文)基于mvc设计模式的struts框架的研究与应用.pdf_第2页
(计算机软件与理论专业论文)基于mvc设计模式的struts框架的研究与应用.pdf_第3页
(计算机软件与理论专业论文)基于mvc设计模式的struts框架的研究与应用.pdf_第4页
(计算机软件与理论专业论文)基于mvc设计模式的struts框架的研究与应用.pdf_第5页
已阅读5页,还剩48页未读 继续免费阅读

(计算机软件与理论专业论文)基于mvc设计模式的struts框架的研究与应用.pdf.pdf 免费下载

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

文档简介

摘要 基兹,嚣淘w 曲庭麓程序舞毅瓣授寒缀多,蟊a s p 、,s p 、麓静等,毪髓褥 遣务整理逶籀攀l 数据瘁攥佟嵌入到融畦页嚣孛,因瑟经潮页孛毯含了大耋黪疲 麓怒瑾,镬褥茭瑟的逻饕不瀵袋,绘夏瑟静继护带来了诸多不寝。s 粥豫逢会完 藏照务薤理逻辑,毽莰簌靠s 嚣v l 娃编写w 秘瘦震程枣,将霜夏竣幸 襞码蔻禽其 串,这无谂楚嚣专整豹瓣茭设 入受还莛痘爆磴旁缓霉者来魂熬怒菠蹇瓣要求。 上述翊越主要是虫子翅页毒穆鸯韭务箍毽逻辑混杂在一莛遥成瓣,m v c 致 诗攘式瓣挺窭楚簿凑邃一运题提爨了毒效途经,基于馘v 模式魏s 拄l 】趣壤絮爨 为辫秘应塌翟痔豹秀发挺侯了蔓辩豹逮冬。 本文着羲搽蠢基予髓懦握檠夔w 磅瘟舞瓣决方案叛及该方案在实际瑗嚣孛 瓣应弱。 本文蓠惫会绥逶会孳:梅建复杂囊务虚惹豹挖e e 摇檠爱其穗关搜零,对救嚣嚣 毽絮懿穗蠢逡行分辑。鬻速v c 竣诗攘式熬悉怒,攒窭m v c 懿後熹器存瓷熬 不足之处,详缨分辑将m v c 弓l 入硼繇应焉鼹j s p 酣酣e 1 2 模型。之嚣穰述了基 予鞑v c 瀣诗覆式羲兰耱痘囊框鬃s 翻矗g 弑v e 、翠赡b 礴醯帮s 枉毽括鳃缍终结 构,摇窭它销鍪鸯囊鼋特点,著蘑述s 眈据框黎在疑b 瘦蘧开发孛瓣甓势嚣褒。在 魏萋疆土,零文疆密基予s 拄l l s 疆絮熬w 酶瘦弱解决方案,对箕避露襻缌势掇, 势嚣将魏方寨瘟嚣手顼骜实蔑,窕癜一争强产品流逶金建戆结冀系统煞设计彝 该系绫骧墼戆实臻,我方案豹应秀l 释决7 藩鸯系统霾代璐混杂、程穿凄凌终搀苓 渣瘊豢亲豹系绫难鑫维护戆舞邃。 美键蔼w 秘褒蔫;j 2 e 嚣;设诗模式;瓣c ;s 弧l l s 撰檠 a b s 付a c t 脚s 她a l o t o f 酬撇o i o 垂妇 喇s t e d f o r w e b 删i 妇d e v e l 。p m s u c h “a s p , j s & p h p a 聪o n ,w 毯媳妇b 耐坟【s 黼嚣k 垂e 翻畦妇翻磕驿锄料鲥o n i 出l l 脚,s o 昀雠搬o f h ”w e bp a g w o n tb ec l e dn sd i 蚯c u l tf b r 锄m s 训c ti ss i 】i 协1 e 断 妇即l a 鼬gh 【s i 8 sl o 西c ,b u t f h 疆i sa 址出如n l 蛆df b r 蚰i 量1w e bp a g e sd e s i 辨e 璐a n d 辨簪锄瑚e 精,i f 也e y w 黜t 乇。p r o 鲫如r 磷曲剥i 6 柏硼睁幽弘豇d i 】b g o n s e k 1 1 岵r e a s o n f o r p t o b l e m sa b o v e i s m a tc o d e s f o r w 曲p a g e s 黼d f b fb u s i 祷l o g i ca 地m i x e d 翱嘎罐撼m 妇秘p 撼嘲 s 毽舻碡蛹嘶撼耄。也。8 e 即醚e 蚕敬秘矗撼如搿嘲呔堍s 醛艟 m v c i s a b 酬黼c h o i c e f o r w 曲a p p n c 删o n d m l o p 棚粕l 豫科f d :璐鹳。n w 曲雄p 珏c a 蛀。娃s o : u 斑m 赫s e d 嘶蛾幽m e w 酬k a n d 迂s 卿l i 秣蛀雌 i n p m j e c t f 咄也ep a p 盯i l 】i 董i l sj 2 e e 翻m _ g 删畦a n dr e l 撕v et e c h l l o l o g i e s0 f 沁a n dt h 瞄糊a b l z e s 柏a 糟c 搬i g 拄c so f 了2 醯& 觚也ep 婶盯e 雄小螂取p r 泣e i p l c 8 、a d 豫n t a 窖、盛髓出甜鼢g 髂o f m v ca n dj s pm o d e l 2 ,b yw h i c hm v cw e r eb r o u g h tj nt 。w 曲a p p l i c 纠d na n a l y 口髂 瓣漱虹e 氇撵e 蠡瞄槲燃妇k s 挺镰m v e 瓣g 甄v c 、溉b 嗽、殛阻撬弦娃l 扭峨 妇蹴s 幽so f c ho ft h 锄,a 棚拙s 酬a 嘲a d y a d 纽g 鲻o fs m | t s 觑w 曲a p p l j c a 廿 如v e l 雌e 蜮。王l 也e b 8 s i so f a 戚y s e s 籼v e ,b 荆k 血g s 魁r 吣越矗w 曲狮l i c 撕啦s o k 蛀。矗 b 辐e do n 妇u 招,姐dp u t si ti n t op r a 蹦c r 心s i g n i n gas e 砒e 靠l 蛳is y g t e m ,f o r 瓤删蛳砸 o p e 删n gr rp r o d u c t s ,a n d 咖l e m e n d n g 恼p r o t o t y p e ,w 1 1 i c hr e s o h ,e sm e 。b l e mf 胤c o d e s 挑 t h e o l d 娜嗽n 瓣蒯越勰疏畦妣蛐龇。挝嘟 l 白e 黔 泰w 痨蜊i e 鑫畦强;j 2 嚣:嚣;d 髂i 擎辫眭e m ;氛c ;s 缸l 谯蠹锄融 i i l 独创性声臻 本人声明所呈交的论文是我个人在导师指导下进彳亍的研究工作及取得的研 究成果。尽凌菠躲,狳了文孛特象趣敷标注秘致谢熬遗穷多 ,谂文巾不趣含蒺氇 人已经发表绒撰写过的研究成果,也不包含为获得北京正业大学或其它教育机构 魄学位或证书面使用过的材料。与我一同工像的同志对零研究所傲螅任何黄献均 黾在论文中佟了明确的说磺并表涿了谢意。 关于论文使用授权的说明 本大突众了解乾索王监大学蠢关擐整、使震学位谂文懿魏定,靼:学校蠢毂 保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部成部 分内容,可以采用影印、缩印或其他复制手段保存论文 ( 保密的论文在解密后应遵守此规定) 签名:掣导辩签名:稚嚣麓:乏业 1 1 课题来源及背景 第1 章绪论 l - 1 1 课题来源 今天,科学技术发展的一大特点就是科技发展能够很快带来生产力水平的提 高。计算机和网络技术飞速发展,而且已经被广泛应用到工商业、军事、医疗、 文教等生产和社会生活的各个领域,新技术的使用不仅给人们的生活带来了日新 月异的变化,更是极大的促进了社会生产力水平的提高。 在市场竞争日趋激烈的环境下,对于一个流通企业来讲,如何提高效率、如 何有效合理地整合利用现有企业资源、如何分配资金的使用使利润达到最高、以 及如何提高自身在市场中的竞争力,是其在发展过程中要重点解决的问题。目前, 很多企业纷纷采用数字信息化手段对企业资源进行管理,本课题即来源于一个r r 产品流通企业的企业资源规划( e n t c l p d s er e s o u r c ep l a l l n m g ,简称e r p ) 系统, 该系统可以从诸多方面改善企业的经营管理。 首先,由于公司总部与散布在城区其它位置的各营业网点以及公司住外地办 事处之间地理位置的分散使得许多信息的更新和帐簿的登录等都不能及时完成, 从而给公司的经营活动带来了很大影响。新系统使用后,公司的办公和各营业网 点之间可以通过互联网相互连接,使得各部门经理、业务员、财务人员和总经理 都能够及时了解到关于采购、库存和销售、资金等的最新情况,信息得到充分共 享,同时也为公司高层的经营决策起到了积极的辅助作用;其次,系统的使用规 范了手工操作过程中不合理的业务流程,加大了业务环节的透明度,有利于领导 对公司业务的监督和管理;再次,通过供货商、客户关系管理等功能可以随时获 取和分析与他们之间的交易量及其信誉额度的信息,从而有效的规避企业经营活 动中的风险。 1 _ 1 2 课题背景 计算机体系结构的发展经历了集中式计算、c 1 i e t ,s e r v 盯( 即所谓的客户机 服务器模式,简称c s 模式) 、b r a w s e ,s e r v 盯( 即浏览器,服务器模式,简称b ,s 模 式) 几个模式。集中式模式下,多台终端设备与一台或几台大型机连接,所有的 式) 几个模式。集中式模式下,多台终端设备与一台或几台大型机连接,所有的 北京工业大学工学硕士学位论文 处理都集中在大型机上,硬件费用的高昂、软件开发的难度以及软件升级和维护 的困难是这种模式难以普遍应用的主要原因。集中式计算模式难以广泛应用,于 是出现了c l i e n “s e c r 模式,在这种模式下表示逻辑位于客户端,数据处理逻辑 位于服务器端,商务逻辑位于客户端或服务器端,这种模式的缺点也很明显,客 户机的代价过高,商务逻辑不能由多个客户共享,当业务需求发生变化时要更新 多个客户端程序,客户机与服务器之间交互的信息量较大,所以通常用于局域网 内。随着网络技术的发展,基于w 曲的b r o w s 盯s e r v c r 体系结构应运而生,与 c s 结构相比,b s 结构下浏览器端的工作被大大简化,不再进行复杂计算和数 据访问处理,只负责简单的与用户之间的交互,而无论是业务处理逻辑还是数据 操作都由服务器端完成,从而有效克服了c s 结构的缺点 1 】。 耳前,面向w 曲应用程序开发的技术有很多。如a s p 、j s p 、p h p 等,他们 将逻辑判断等业务处理和查询、添加、删除等数据库操作嵌入到h h n l 页面中, 这样虽然可以解决网页设计人员必须在程序中制作网页的问题,但却在页面中包 含了大量的应用处理,使得h t n l l 页面的逻辑不再简单、清晰,给页面的更新和 维护带来了诸多不便。s e r v l c t 则比较适合完成业务逻辑处理、事务处理、数据库 操作等功能,但仅仅依靠s e n ,l e t 编写w 曲应用程序,需要将网页设计代码包含 在s e r v l e t 中,这不论是对专业的网页设计人员还是对应用程序编写者来说都是 较高的要求。 上述技术在开发w 曲应用程序过程中的缺陷,主要是由于网页制作与业务 处理逻辑没有分开而是被混在一起造成的,要解决这一问题需要在程序设计思想 上有新的突破。m v c 设计模式的提出为解决这一问题提供了有效途径,它将显 示界面、控制逻辑和业务处理逻辑分开,使得无论是界面变化还是业务需求变更 都不会影响到程序的其它部分,从而方便了程序的开发和维护。 1 2 国内外研究现状 j 2 e e 是s l l i l 公司提出的、为基于多层分布式应用模型的j a v a 应用的设计、 开发、装配和部署提供的一个完整的应用框架,是目前能够满足企业级应用开发 的最佳方案之一,j 2 e e 既提供了管理应用程序的基础设旋,又提供了建立应用 程序的a _ p i 服务吐j 2 e e 由一些规范组成,应用程序的编写要遵循这些规范, 如:j s p 、s e n ,1 e t 、u b a e n t e i p r i s ej 砌e a n ) 、j d b c 、j m s ( j a v am e s s a g es e r 试c e ) 、 j t a ( j a v at r a l l s l a t e a p i ) 、j a v a m 确等等。j 2 e e 提供了中间层集成框架,使编程者 不必关心运行关键的商业应用所需要的底层的复杂编程,而只需要集中精力完成 商业逻辑的设计、处理和应用的表示。 多层结构如何组织才能提高程序的可维护性,才能使程序对于需求的变动产 生快速的响应,m v c 设计模式的引入可以有效的解决上述问题。 m v c ( 是m o d e l c w c o n 呐1 l 盯的简称) 指模型视图控制器设计模式,它 通常用于分布式应用系统的设计和分析,如:大型商业网站、企业信息系统、管 理信息系统、决策支持系统等,但它本身并不局限于某一特定的领域。m v c 设 计模式的特点是它强制性地使应用程序的输入、处理和输出分开,将其划分成3 个核心部件模型、视图和控制器,它们各司其职,分别负责业务处理逻辑、 用户显示和程序执行的控制,从而使程序结构清晰、层次分明、便于维护。 尽管构造m v c 应用程序需要一些额外的工作,但是它给我们带来的好处是 不容质疑的。多个视图能共享一个模型,不仅简化了程序的开发,而且可以满足 多种方式对于应用程序的访问:因为模型是自包含的,并且与控制器和视图相分 离,所以很容易改变应用程序的数据层和业务规则,而不会影响到其它部分;模 型具有可移植性和伸缩性;基于m v c 的应用程序开发具有组件化的优点,有利 于软件的工程化管理等等。 设计模式是软件开发经验的总结,它是一个概念,是一个逻辑实体,而框架 可以看成是基于某一特定平台的一种或几种设计模式的物理实现。设计模式比框 架更抽象,设计模式只有其实例才能表示为代码,而框架本身可以用代码表示, 框架是一套设计详细的类,类与类之间功能各异,又彼此联系,相辅相成,形成 了对某一类问题的可重用的、易扩展的解决方案。 目前已经出现了很多构建基于m v c 设计模式的w 曲应用程序框架,如 s p r i n gm v c 、w 曲w b r k 、s 眦s 等,它们都实现了m v c 设计模式,但又各具特 色,其中s 跏s 是较为流行的一种,它是a p a c h es o f t w a r ef o u n d a t i o n 的一个开放 源代码项目,提供了很多组件来实现m v c 的基本特征,简化了基于m v c 的应 用程序的开发。 1 3 论文的研究内容及文章的组织结构 论文首先对适合于商业应用开发的j 2 e e 框架、相关技术及其特点进行分析; 北京工业大学工学硕士学位论文 探讨m v c 设计模式的原理及这一模式的优缺点;然后将逐一分析基于m v c 设 计模式的三种应用框架s 研n gm v c 、w 曲w j r k 和s 饥址s 的组件结构及各自 的特点,对这三种框架进行比较。本文将重点讨论基于s 廿u t s 框架的w 曲应用 解决方案以及这种方案在企业结算系统中的应用。此解决方案对s 打u t s 框架进行 了扩展,引入了业务对象、业务代理和数据访问对象模式,在控制器的a c t i o n 组件设计中借鉴了拦截器机制。随后,文章将详细介绍基于此方案的企业结算系 统的设计和原型的实现。 第1 章,绪论 介绍课题来源、课题背景,本课题在国内外的研究现状以及论文的主要研究 内容和文章的组织结构。 第2 章,j 2 e e 体系结构 介绍j 2 e e 多层体系结构、j 2 e e 框架的特点,并对j 2 e e 框架下的j s p 、s e l e t 、 e j b 和j d b c 技术进行说明。 第3 章,m v c 设计模式 引入m v c 设计模式,详细说明其工作原理,分析m v c 的优缺点,介绍并 比较将m v c 设计模式引入w 曲应用的j s p m o d e l l 和j s p m o d e l 2 两个模型。 第4 章,基于s 讯l 协框架的w 曲应用解决方案 分析s p r i n gm v c 、w 曲w o r k 和s 在u t s 三种基于m v c 设计模式的应用框架 的组件结构;阐述它们各自所具有的特点,并指出s 仕u t s 较其它两种框架在解决 w 曲应用方面的优势;对基于s m l t s 框架的w 曲应用解决方案进行详细说明。 第5 章,方案在结算系统中的应用 对结算系统的功能和后台数据库表的设计进行介绍;详细说明结算系统中模 型、视图、控制器、s 仃u t s c o n f i g x m l 配置文件、业务对象和数据访问对象的具 体实现。 结论 总结本论文的主要研究工作,并提出论文中有待深入研究和进一步改进的地 方。 4 2 1j 2 e e 架构概述 第2 章砣e e 体系结梅 汜e e 絮构在原有魏两层结梅中演增麴了一层或多瑟,各瑶籀互独立完成一 定的功能,只藤层与层之间的接口保持相对稳定,即使菜一层内的处理逻辑发生 交往瞧蚕会影嫡其它豢,这耱特轰建褥疆嚣嚣平台菲髻逶会予梅建器隶塞蕊袈杂 和日趋变化的商务应用程序。 托e e 遴嚣包括表零客户屡、w 曲层、糍务逻辑层狃数据逻鞲层。测爨器在 客户层中运行,从服务器端下载静态h 掘l l 氯面或者由稻p 、s e r v l 。t 等生成的动 态页面显示绘用户;w 鼢层由,s p 或s e r v l e t 组成,负爨程序流穰控制;商务逻 辑瑟由运行焱容器孛的嚣瑶或j 科a b e a l l 缝络缀成,遮黧缰律一经编写可耋笈稍 用,可以不加修改的被移植到其它服务器上,这一层魁多层j 2 e e 多层体系绪构 戆棱。基,宅一方瑟为w 痨屡提供藏震摇露溺震戆接口,另一方嚣暹遘囝b c 实 现对数据库的调用:数据逻辑层由一个或多个数据库组成,主要包括添加、更新、 删除等数据艨操作以及隽成事务处理的存储过程等。珐e e 企业应用结构如图2 1 所示: 图2 1j 2 e e 企业应用结构髓 淞冬l & 蹴獭噎蹿蓝镰晒矬s 瓣e 娃显e e 一5 一 北累工业大掌工学坝士学位论趸 2 2j 2 e e 相关技术 2 2 1j s p 技术 j s p 是j a v a s e r v e r p a g e s 的缩写,是s u n 公司1 9 9 9 年推出的一种动态网页技 术”,它在服务器端运行,接收来自客户端的用户请求并生成显示页面。j s p 是 以j a v a 技术为基础的,具有动态页面与静态页面分离、与硬件平台无关、编译 后运行等优点,是目前互联网上的主流开发工具。 2 2 2s e r v l e t 技术 s e l e t 是一个服务器端的软件组件,基于j a v a 语言编写,它动态扩展了服 务器端的功能,允许用户和服务器之间进行真正的双向交互。s e n r l e t 与传统的 w 曲开发技术相比有着许多优越之处:支持多线程、动态加载、跨服务器、独立 于协议、面向对象、可扩展等。s e 1 c t 以一种简单、有效的方式来处理请求,响 应操作,s e l e t a p i 则提供了一个很好的框架支持扩展服务器端的功能。 2 2 3 e j b 技术 e j b 是一个j a v a 类和沮。文件的集合,打包为一个单元。根据坨e e 容器 环境和e j b 技术规范的定义,这些j a v a 类遵守特定的规则并且提供专门的回滚 方法吼e j b 提供了业务逻辑的封装和管理,它运行在e j b 容器中,e j b 容器在 应用服务器端。e j b 技术规范设计用于提供企业级服务,在管理和编译模型方面 具有一定的复杂性。e j b 主要包括实体b e 觚、会话b e a l l 和消息驱动b e a l l ,它们 各自完成不同的功能。实体b e a l l 用于数据存储和事务处理,是存储在永久性数 据空间( 如数据库) 中的持久性数据的对象表示【5 】;会话b e 锄控制着实体如何交互 以及整体处理;消息驱动b e 孤在e j b 中提供了一种异步消息处理的机制。 2 2 4j d b c 技术 j d b c a p i 提供了在j a v a 程序中连接关系数据库的能力。通过巾b c a p i 可 以连接到一个数据库,实现结构化查询以及对数据库的增、删、改等操作。皿b c 通过把特定数据库厂商专用的细节抽象出来而实现了大多数常用数据库访问功 能的通用化【2 】,得到的一组类和接口放在j a v a s q l 类中,可供有j d b c 驱动程序 的数据库使用。应用程序遵守普通的数据库功能便可支持j d b c 接口的调用。除 此以外,在企业级应用中j d b c 还提供数据库连接池、分布式事务处理等功能。 第2 章j 2 e e 体系结构 2 _ 3j 2 e e 的特点 面向对象编程。j 2 e e 是基于j a v a 语言的,j a v a 是一种面向对象的编程语言, 具有继承、封装、多态等特性,提供了丰富的数据类型和强大的功能,因此j 2 e e 平台上不仅可以设计复杂的应用,而且可以使w 曲应用程序具有良好的可维护 性和可扩展性。 平台无关性。j a v a 语言具有很好的跨平台特点,用j a v a 语言编写的程序在 j 讧( j a v a r h l a lm h i 】) 上解释执行,而不拘泥于某一个平台的支持,这也是 j a v a 这种编程语言可以被广泛应用的原因之一。 基于组件技术。j 2 e e 框架由一系列的组件构成,这些组件运行在一定的容 器之中,组件之间通过接口进行交互,当商务需求发生变化时,可以对相应组件 内部的实现进行修改和更新,只要该组件与其它组件之间的接口不变,此需求变 化就不会影响到其它组件。 提供了许多标准的服务。j 2 e e 平台提供了事务处理、对象生存控制、状态 维持、并发控制、安全检测、资源共享等服务5 1 ,只需要进行简单配置就可以获 得这些服务,因此可以使编程人员从繁琐的系统设计和服务提供中解脱出来,将 主要精力放至业务逻辑处理上,有利于提高编程的效率。 2 4 本章小结 本章首先介绍了j 2 e e 框架的多层体系结构,包括每一层的组成以及各层的 分工;其次对j s p 、s e r v l e t 、e j b 、j d b c 这四种坨e e 框架下的常用技术进行简 要的说明;本章的最后归纳了j 2 e e 框架的特点,即面向对象编程、平台无关性、 基于组件技术、提供许多标准的服务。 第3 章m v c 设计模式 3 1 设计模式概述 软件工程师在解决难题时会尝试一些新的思路,观察他们的方法能否成功, 蛆便在下次遇到同类问题时在此基础上创造更有效的方法。不同的开发者在软件 研发过程中可能为解决同类问题各自花费大量的时间和精力,即使这样也并非每 个人使用的都是最佳方法。 a 】r i s ) h e ra 1 a d e r 说过:“每一个模式描述了一个在我们周围不断重复发 生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方 案而不必做重复劳动”。a l e x m d e r 所说的是建筑模式,但它在面向对象程序设计 中也同样适用。 3 2m v c 设计模式的引入 m v c 是m o d c l - w c o n 盱0 l l e r 的简称,即模型一视图控制器,它是x e r o x p 蛆汇在2 0 世纪8 0 年代为编程语言s m a i i t a i k 引入的口q ,用于用户界面的设计, 逐步发展成为表示层设计的一种模式。在m v c 模式下,系统被强制性地分为模 型、视图和控制器三个部分,它们各司其职,从而使系统整体的结构层次更加清 晰。 m v c 通过为相同的信息提供多种不同的表示形式从而在交互式应用的开发 中显示了巨大的优势。例如,同样是公司固定资产状况的信息,存货管理人员需 要了解设备的数量、它们的分配情况以及由谁负责维护这些设备:而财务预算人 员则希望了解下一财政年度需要哪些新的固定资产以及欲购买这些资产所需要 的费用。这就要求相同的信息以不同的形式显示给不同的用户,如果设计成设备 基本情况、设备分配以及预算三个子模块,那么不仅软件开发工作复杂、具有重 复性,而且当基本信息发生变化时也要对三个子模块都加以更改,大大增加了系 统维护人员的工作量。m v c 模式可以有效的解决这一问题,在这种模式下,多 个视图可以共享一个模型,模型存放基本信息,而多个视图以不同的方式显示给 不同需求的用户,如果基本信息发生变化则只修改一个模型即可,因为模型和视 图各自相互独立,所以只要它们之问的接口不变,视图就不需要发生变化。 图各自相互独立,所以只要它们之间的接口不变,视图就不需要发生变化。 北京工业大学工学硕士学位论文 3 3m v c 设计模式的原理 模型封装了应用问题的核心数据、逻辑关系和业务规则,提供了完成问题处 理的操作过程。一方面,模型为控制器所调用,实现业务处理功能;另一方面, 模型还为视图获取显示数据而提供了访问其数据的操作。因为模型是与数据格式 无关的,所以一个模型可以为多个视图提供数据,这样模型一次编写就可为多个 视图重用,从而减少了代码的重复性。 视图是用户看到的并与之交互的界面。视图的内容从模型处获得,视图的更 新由控制器来完成。m v c 最强调的一点就是视图中决不允许也决不应该包含诸 如业务逻辑的东西,在视图中其实没有真正的处理发生也不应该有处理发生,作 为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。 控制器根据用户的输入调用相应的模型和视图去完成用户的需求。具体的 说,控制器本身不输出任何东西和做出任何处理,它只是接收请求并决定调用哪 个模型构件去处理请求,以及用哪个视图来显示模型处理之后返回的数据。 m v c 的处理过程:首先控制器接收用户的请求,并决定应该调用哪个模型 来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用 相应的视图格式化模型返回的数据,并通过表示层呈现给用户。图3 1 所示为模 型、视图、控制器这三个模块各自的功能以及它们之间的相互关系: 选择视图l控制器 1接受用户请求j 响应请求 1 调用模型响应用户请求 i l选择视图显示模型处理后的结果| 视图i 状态查询 警旦塞鎏金鍪据传给控制器i 再磊磊 显示模型状态 i = := :! 响应模型状态更新l 方法调用 模型 封装应用程序状态 响应状态查询 处理业务流程 通知视图更新状态 事件 图3 1 模型、视图、控制器之间的关系图 f i g u r e3 1r e l 撕s i l i pa m o n gm o d e l 、v i e wa n dc o n 仃0 1 1 e r 第3 苹m v c 设计模式 3 4m v c 设计模式的优缺点 m v c 设计模式将业务处理、用户显示和控制逻辑相互分开,使程序的层次 结构更加规范、清晰,方便了系统的升级和维护。利用m v c 模式构建系统具体 具有以下几方面优越之处: 一多个视图能共享一个模型。现在需要用越来越多的方式来访问应用程序, 对此采用m v c 设计模式,无论用户想要f 1 a s h 界面还是w 却界面,用一个模型 就能处理,由于已经将数据和业务规则从表示层分离,所以可以最大化地重用代 码。 - 因为模型是自包含的,并且与控制器和视图相分离,所以很容易改变应 用程序的数据层和业务规则。如果想把数据库从m y s q l 移植到o m c l e ,或者改 变基于r d b m s 的数据源到u ) a p ,只需改变模型即可。一旦正确地实现了模型, 不管数据来自数据库或是u ) a p 服务器,视图将会正确地显示。由于运用m v c 的应用程序的三个部件相互对立,改变其中一个不会影响其它两个,所以依据这 种设计思想能构造良好的松耦合的构件。 - 业务处理逻辑和页面显示各自独立,使程序员和网页设计人员可以分别 专注于自己的工作,不用为程序中的页面设计和网页里的程序控制而烦恼。 - 具有组件化的优点。把应用逻辑、处理过程和显示逻辑分成不同的组件 实现,这些组件可以进行交互和重用。 - 有利于软件工程化管理。由于不同的层各司其职,每一层不同的应用具 有某些相同的特征,有利于通过工程化、工具化产生管理程序代码,从而更易于 实现对大规模系统的开发和管理。 模型的可移植性和伸缩性”。模型的相对独立性使得它很容易被移植到 新的平台工作,很容易被改变业务规则而又不影响( 或者说这种影响很小) 视图 和控制器。 同时m v c 设计模式也存在一定的不足: - 项目规划将特别耗时。这是由于m v c 仅是一种模式并不是现成的框架 不可直接套用,且其内部原理比较复杂,所以需要花费一些时间去思考。 增加了系统结构和实现的复杂性。经验表明,m v c 由于将应用分为三 层,意味着代码文件增多,因此,对于文件的管理需要费点心思。 j 幕工娩太学工学醺毒学健蟾文 - 视图对模型数掇的低效率访问。依据模型所提供接口的不同,可能襁要 被多次调用才镌使视圈获得是够魏显示数播。对予交他不频繁静数据进行鹃不必 要的频繁访问,将降低系统运行性能。 3 5 撇设计模式若i 入w 砖应用 m v c 从概念的提出到在w 曲废用的开发中引入这种设计模式经历了定的 辩闻,原嚣怒程痔语言秘h 恤l 静努离一壹滚戳实现。攀翘静稻壬嘲员中韭务逻 辑处理的程序代码和h n n l 语句是混在一起的,j s p 文件负责创建h 血l 、控制网 袋滚程还要受麦监务逻舞憝理,逡傻褥鼹宅豹缝护分嚣难。 为了解决这个问题,s 1 】n 公司先后制定了两种规范,成为j s p m 0 d e 】l 和j 8 p m 醚e 1 2 ,这鼹秘模型熬缝橡匿分剐如图3 - 2 、3 3 所示; b lr e l l i l e 鼗; f i7 j s p 。l o 4 r 联 一l 竺竺竺 、3 。 7 lj w s e r s e n t e q m s es e i 压壤瓤s o l l k 圈3 2j s p m o d e l l 掣l 塞璐岩3 2 ,黯氧虚。如l l ; b 1r 0 幕i o 4 j 溺盈r l ) r o w s p o s e 船v 5 e n mj m r i s e 6 r l e s r s d a v 【as a 图3 3j s p m e 1 2 f 墼麟3 1 3j 辨m 妇如1 2 第3 章m v c 设计模式 这两种模型的主要区别在于处理用户请求的位置不可”】。m o d e l l 中由j s p 页面负责处理用户请求、控制业务流,同时它还完成表示层的数据显示功能,这 种模型未能真正实现视图和控制器功能的分离。m o d e l 2 则是使用j s p 和s e l e t 分别完成视图和控制器的功能,j s p 从s e 1 e t 中提取动态内容插入到静态模板生 成向用户显示的页面,其中不包含任何业务处理逻辑;s e 1 e t 则负责处理用户 的请求,创建j s p 页面需要使用的j a v a b e 对象,根据用户请求选择合适的j s p 页返回给用户,实际上充当了控制器的角色。m o d c l 2 模型有效的分离了页面显 示与处理逻辑,j s p 页面中不再混有大量的j a v a 代码,从而使程序的结构更加清 晰,方便了系统的维护,m o d e l 2 的提出使得m v c 设计模式在w 曲中的应用更 加广泛。 3 6 本章小结 本章首先在描述设计模式思想的基础上引入m v c 软件设计模式,介绍了该 模式中的模型、视图和控制器各个部分的组成、功能,以及在接到用户请求后 m v c 的处理过程;然后分析m v c 设计模式的优点和缺点;本章的最后对比了 将m v c 设计模式引入w 曲应用的j s p m o d e l l 和j s p m o d e l 2 两个模型。 第4 章基于s 眦s 框架的w l e b 应用解决方案 霹1m v c 设计模式添应用嘏架分耩 4 1 。l 软件框架概述 软件框架是一系到黉的集合,京可用于实现某种可复用应用或菜一层可麓用 应用的设计。程序开发人员只需要编写软件樵架中各部分的代码,当应用程膨需 要菜稗服务辩,框絮便会调焉耪寂酌类宠戒穰度服务,弗控麓稷净筏行静整体流 程。 框絮秀发缀适会露髓嚣发的簧杂牲,嚣必宅麓兔谗多续程久受提供楚攀瓣、 易用的模型。设计良好的开源框絮舆有以下优点: - 有了好的框架,开发人员只鬟编写必要豹代码,不用把蔓鬻辕力投入到 低朦次的应用程序界面上。 - 设计趣好的框絮能够为应用提供特定的结构和一致性维护,这种结构对 予綮痰囊矮嚣孛懿萁德嚣发者来谈氇是清糍戆。 一易学易用的框架会提供详细的案例和文档说明。 瓣c 是个抽象橛念,是一令逻辑实体,欲在应羽审建曩逮耱设计摸式, 还错在某一特定的平台下对m v c 的模型、视图和控制器组件进行物理实现,包 括划分它们的功戆,选取该平台的热体技术分别实现这三个组件,设计它们之间 的接口等等。程应用中设计一个对姗c 的良好的实现怒一项技术难度很高酌工 作,而且费时费力,为了避免在每次应用开发的过程中黧复设计,因此一些慕于 m v e 模式瓣囊好懿豹纛实瑷鑫较耱框架鹣形式嚣定下来,供获释工作太员凌系 统的开发过糨中使用,下面将对s 嘶n gm v c 、w 邮懒k 和s m l t s 这三个框架及 务囊的组终续掏进行分糖。 4 1 2s 胛呱m v c 框架 4 。1 2 。l s 舞n gm v c 擐黎凝述秘淑g 挺舞是一个分层架 鸯,由7 个定义蹇好熬模 块组成【4 9 l 。s p 血g 模块构建在核心容器之上,核心容器定义了创魏、配置和祷理 b e a n 的方式。缀成s p d n g 框架的每个模块( 或组件) 都可以单独存焱,或者与其它 一个或多个横块联合实蕊。s p 曲g 稚架的功麓可以用在任何髓e e 服务嚣中,犬 北京工业大学工学硕士学位论文 多数功能也适用于不受管理的环境。s p 血g 框架的一大特点是它是基于接口编程 的而不是基于类编程。 s p 血g 提供了m v c 框架,它是一个全功能的构建w 曲应用程序的m v c 模 式的实现,具有高度可配置性。s 砸n g 中提供了m o d c l 、v i e w 概念和相应的数 据结构m o d e 认n d e w ,它只是简单的把要显示的数据和显示结果封装在一个类 里,但是它却提供了明确的m v c 概念,尤其是m o d e l 概念的强化,使程序的逻 辑变得更加清晰了。 4 1 2 2s 硼吨m v c 的各部分组件m o d e l 层共有一个d a o 接口、一个d a 0 b n p l 类、一个s e i c e 接口、一个s e i c e h n p l 类和一个d a 协o b j c c t 类。其中d a t a o b j e c t 是纯粹的数据载体,d a o 接口封装了对数据库进行访问的操作,s e r v i c e 接口封 装了业务处理逻辑,d a o h n p l 和s e i c e h n p l 分别是d a o 和s e i c e 的实现类。 s p 曲gm v c 的t a g 数量有限,但却是精心设计的,s p r i n g 页面里的t e x t 、 c h e c 心o x 等和一般的文本框、复选框相同,只是用s p 血曲i n d 对输入内容进行 了一下包装。 s p d n g 的c o n 在d u e r 是s i g l d o 的,每当用户请求,系统都会调用同一个 i n s t m c e 去处理,这样做的好处是:不用每次创建c 0 n 旺0 l l e r ,减少了对象创建和 垃圾回收的时间,但也存在着弊端:只有一个c o n 缸o h c r 的i i l s t 锄c e ,当多个线 程调用它的时候,这个i n s t a n c e 变量是线程不安全的。 s p 血gm v c 提供了m u l 础l c t i o n c o r n r o l l e r ,使它可以在一个c o n 仃d l l c f 类中 包括多个a c t i o n ,这样在设计上虽不是很优雅,但却很实用。 s p 血gm v c 提供了i n t e r c 印t o r o 拦截器机制,其原理是:h t e r c c p t o r 将a c t i o n 共用的行为独立出来,在a c 廿o n 执行前后运行,这也就是所谓的a o p ( a s p e c t o r i 铋t e dp r o 掣蛳l i n i n g ,面向切面编程) ,它是分散关注的编程方法,它将通用需 求功能从不相关类中分离出来,同时能够使得很多类共享一个行为,一旦行为发 生变化,不必修改很多类,只要修改这个行为就可以了,这样不仅减少了a c d o n 的代码,而且独立出来的行为具有可复用性。s p r i n g 的h 姐d 1 蚰1 t e r c 印t o r 包括三 个方法:p 斓孤d i c 、p o s 忸n d l e 和a n e 圮o n l p l e t i o n ,分别对应c o n 血d l l c r 执行前、 c o n 的u e r 执行后和p a g er d c r 之后。 第4 章基于s m r i s 框架的w e b 应用解决方案 4 1 3w 曲w o r k 框架 4 1 3 1w 曲w j r k 框架概述w 击w ( r k 是由o p e n s y t n p h o n y 组织开发的,是j 2 e e 平台下实现m v c 模式的应用框架,w 曲w b r k 目前最新版本是2 1 ,现在的 w 曲w o r k 2 x 的前身是m c k a r do b e r g 开发的w 曲w 矾【,但现在w 曲w j r k 已经被 拆分成了x w o r k l 和w 曲w 础盘两个项目【4 8 ,如图4 1 所示: 图4 - 1 w b b w b r k 的发展过程 f i g i 】r e4 1d e v e l o p m mp f o c e s so f w 曲w b n c x 、v o r k 简洁、灵活,是一个标准的c o 蛐蛆d 模式实现,不支持w 曲,它提 供了前端拦截机( i n t e r c 印t o r ) 、运行时表单属性验证、类型转换、表达式语言、i o c 容器等核心功能。 w 曲w o r 也建立在o r k 的基础上,支持w 曲,处理h t t p 的请求和响应。 w 曲w o d 匕使用s e 1 e t d i s p a t c h e r 将h t t p 请求变成a c t i o n 、s e s s i o na p p l i c a t i o n 范围的映射、r e q u e s t 请求参数映射。w 曲w b r l ( 2 支持多种视图表示,视图部分可 以是j s p 、v c l o c i 可、胁e m a r k 眠j a s p e r r e p o r t s 、讧l 等。 4 1 3 2w 曲w j r k 的控制器 w 曲w 口r k 的a c 廿o na c t i o n 在m v c 模式中担任控制器部分的角色,在 w 曲w b r k 中使用的最多。每个请求的动作都对应于一个相应的a c t i o n ,一个a c d o n 是一个独立的工作单元和控制命令,它必须要实现x w o r k 里的a c t i o n 接口,实 现a c 6 0 n 接口的e x e c u t e o 方法。e x c c u t e o 方法是a c t i o n 类里最重要的部分,它 执行返回s 妇g 类型的值,在a c t i o n 中返回的值一般使用标准静态字符常量,它 还决定e ) 【e c u t e 0 方法执行完成之后,调用哪一种返回结果。字符常量的含义如下: s u c c e s s :a c d o n 正确执行完成,返回相应视图; n o n e :a c t i o n 正确执行完成,但并不返回任何视图; j 象王藏大学工学戳尘掌健蟾趸 e t o r :a c t i o n 执行失败,返回到错误处理视图; 姗u t :a e 畦o n 的执行,需簧驭前靖彝掰获取参数,p u 苫就是彳弋表这个参 数输入的界面,一般在应用中,会对这些参数进行验证,如果验i 雁没有通过,将 叁麓返圈到该援蓬; l o g 州:因为用户没有登录而使得a c 吐o n 没有正确执行,将返回该登录视图, 要浓用户进行登录验证。 a c 右o n 擞最好不要实现业务代码,a c t i o n 的主要功能是提供从请求中取得的 参数的值,转化成相应的模型,辩将模型传递给执行业务操作的对象。 w 两礅旅酶缸虹o n 是绫摇安众豹,箕中a c 矗o o 抽。x t 是a c 谯。n 执毒亍辩的上 下文,上下文可以看作怒一个容器,它存放的是a c 虹o n 襁执行时需鼹用到的对象, 在每次撬学a c 蛀豫之囊蓼都会翅建鞭懿a c 既心o e t 麟,a c 蛀。呔趣糖燃是线程安垒 的,也就是说在同一个线程里a c d o n c 0 n t e m 熙的属性楚唯一的,因此说w 幽w b d 【 曼躲a c 蛀o l l 楚线程安全黥。 一 s e r v l e t d i s p g 心懈原理s e n l e t d i s p 甜c h e r 是默认的处理w 曲聊请求的 调度器,它熄一个j a v a s e r v l e t ,怒w 曲w j r k 框架的控制器。所有对a c 缸o n 调用 静请求都将通过这个s w 论瞄印幽调度。京将在w 丽赋量粼置 s e r v l 甜) i s p a t c h 龆时指定,让所有对w 曲w b r k 的a c d o n 的请求都对应到该调废的 ,撇s e r v l e 夸。s ,l 鞠i 辨a 把毫嚣接受害户蠛豹肼p 谤袋,将j 斜a s e 球l e 专熬缓多 相荧对象进行包装,再传给b 嫩框架,由x w o r k 攫架去解析x w o r k x m l 配置 文传,根据既鼍文件的傣息,创建对应的a c 6 0 n ,缀装弗调用据擞的拦截器,执 行a c t i o n ,返回执行结果。w e b w b 矗使阁x w o 成的核心,主要是由这个 s e r v l e t d i s p a t c h e r 去实现。 - 表这忒语言e l 释o q 盹0 g 范( 0 蟠c c 扛g 裁峨溉g 辐辨泌g 黼鬈c 豹 缩碍) 是一种功能强大的表达式语言,语法简单一致,它可以存取对象的任意属 瞧,调鼹对象瓣方法,逮历黠象瓣维稳蚕,窳蕊字段类篷转势;等功能。o 盹是 x w o r k 的表达式语言的核心。 h t e f c 。p t o r 框絮及其工作原理如同在s p 血gm v c 中的分绍,w 幽谳畦 巾酾h e r c 印协拦截器) 将a c t i o n 熬用酶 亍为独立出来,在a c

温馨提示

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

评论

0/150

提交评论