【PHP开源代码栏目提醒】:网学会员鉴于大家对PHP开源代码十分关注,论文会员在此为大家搜集整理了“基于MVC模式的Spring框架的应用与研究 - 硕士论文”一文,供大家参考学习
Y 855895分类号 密 级U D C 基于MVC模式的Spring框架的应用与研究 邹存洁 指导教师 陈佳 职称 教授 学位授予单位 大连海事大学 申请学位级别 硕士 学科与专业 管理科学与工程
论文完成日期 2006年2月
论文答辩日期 2006年3月 答辩委员会主席 摘要 MVC模式是众多设计模式中的一种,它为应用系统的开发提供了一种分层的体系结构,即:视图层、控制层和模型层,这种三层结构随着12EE的出现使得Mvc在Web应用开发中得到了更为广泛的应用。
但是由于J2EE自身过于复杂,令人很难把握和理解,同时复杂的结构又降低了系统的性能,因此出现了许多如Struts等轻量级的应用框架,但由于这些框架的出发点各不相同,对MVC模式的实现方式也大相径庭,因此它们自身都有着这样或那样的缺点。
本文通过对Spring框架的研究,探讨将不同框架进行整合的可能性,从而形成一个新的整合框架为Web应用开发提供更为有效的解决方案。
Spring框架是一个从2003年2月才开始的
开源工程,它主要来源于RodJohnson所著的Expert One—on—One 32EE Design and Development一书,在此书中Rod Johnson倡导J2EE实用主义的设计思想,并随书提供了一个初步的开发框架实现。
在此基础之上,Rod Johnson进行了进一步的改造和扩充,使其发展为一个新的开发框架,即:Spring框架。
其出发点之一是要提供一种贯穿始终的解决方案,将各框架的优秀技术整合到一个应用中,同时它自身提供的IoC容器和AOP支持,弥补了以往Web应用框架中的一些不足之处。
本文通过对上述内容的研究,利用Spring本身“无侵入性”的特点,将Spring与Struts框架进行整合,形成一个新的Web应用框架。
该框架不仅拥有Struts灵活的视图层和控制层,而且兼有Spring的IoC与AOP机制,因而可以大大提高 业务层的重用性和扩展性。
在应用实践中,使用整合后的框架,根据“面向接口” 的原则,设计并实施Web应用系统的开发,使其业务层的重用性和扩展性得到了 极大的提高。
实践证明本文提出的整合后的Web应用框架,对应用系统的开发具 有非常重要的指导意义和实用价值。
关键词:Spr;ng框架;Struts框架;IoC;AOP The research and application of the Spring framework which based on MVC pattern Abstract MVC pattern is one of the design patterns,it provides a layeredstructure for the development of application system,which ineludes view,controller and model.With the appearance of J2EE,MVC is used more widelyin the development of web application.But J2EE is too complicated and toohard to be held and understood,and the complicated framework also reducesthe capability of system at the same time.So it comes forth a lot of1ight—weight frameworks such as Struts.Since the springboards of theseframeworks are different and also about their methods on how to real izethe MVC pattern,all of them have some disadvantages.This paper diSCUSSeSthe possibility to integrate different frameworks by investigating theSpring framework,and hopes to form a new framework which will provide amore effective solution for web application development. Spring framework is an Open Source Engineering which started from February 2003,it mostly rooted in the book<Expert One—on-One J2EE Design and the design Development>written by Rod Johnson.In this book,Rod Johnson advocated idea of J2EE practicality,and provided a primary development framework implement. On this foundation,Rod Johnson had a farther reconstruction and extension to develop it as a new development framework,which is Spring framework.One of its aims is to provide consistent programming in all tiers and thereby integrate the application stack, and it provides IoC container and AOP support to fetch up some shortcomings of the former web application frameworks. This paper utilizes one of the Spring’s advantages,which is called“non。
invasion”, to integrate Spring and Struts and then form a new web application framework.This framework possesses not only flexible View and Controller of Struts but also IoC and AOP of Spring,SO it Can increase the potential for business layer reuse and it’s extension greatly.In practice,the integrated framework in terms of the principle of “interface oriented”,designs and actualizes the development ofweb application system,in order to improve the reuse and extension of business logical layer.It proved that theintegrated web application framework has a very important directive meaning andpractical value for the development of application systems.Key Words:Spring framework;Struts framework:IoC;AOP 大连海事大学学位
论文原创性声明和使用授权说明
原创性声明 本人郑重声明:本
论文是在导师的指导下,独立进行研究工作所取得的成果,撰写成博士,硕士学位
论文 !基王MY£撞式的S匦坠g框袈的廛且量硒宜:。
除
论文中已经注明引用的内容外,对
论文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本
论文中不包含任何未加明确注明的其他个人或集体已经公开发表或未公开发表的成果。
本声明的法律责任由本人承担。
论文作者签名:备脚 聊‘年j月万日 学位
论文版权使用授权书 本学位
论文作者及指导教师完全了解“大连海事大学研究生学位
论文提交、
版权使用管理办法”,同意大连海事大学保留并向国家有关部门或机构送交学位
论文的复印件和电子版,允许
论文被查阅和借阅。
本人授权大连海事大学可以将本学位
论文的全部或部分内容编入有关数据库进行检索,也可采用影印、缩印或扫描等复制手段保存和汇编学位
论文。
保密口,在——年解密后适用本授权书。
本学位
论文属于: 保密口 不保密口(请在以上方框内打“4”) 日 第1章绪论1.1课题背景 互联网的迅速发展对人类的活动产生了巨大的影响,无论是政府、企业抑或是个人,莫不如此。
人们对互联网的青睐,促进了
网络的飞速发展,新理论、新技术层出不穷。
但是当人们的要求不断的增长,使得软件开发的复杂性也不断的上升。
针对这些问题,人们又不断的发展相应的解决方案,出现了许多的设计模式。
其实,设计模式来源于建筑学,所谓“他山之石,可以攻玉”,在IT业里,设计模式为许多重复出现的问题,提出了既优雅又实际的解决方案【”。
MVC模式是众多设计模式中的一种,它提供了一个原则,可以按照模型、表达方式和行为等角色把一个应用系统的各个部分之间的耦合解脱、分割开来。
这种体系结构为复杂的Web应用提供了清晰的层次划分,同时这种三层结构的理念随肴72EE的出现在Web应用开发中得到了更为广泛的应用。
然而MVC模式仅仅为Web应用提供了对应的设计方法,并没有提供具体的技术实现,为此产生了众多的Web应用开发框架,它们大多使用MVC模式作为指导思想,各自定义不同的规范,提供不同的技术细节,以便使Web开发更为有效快捷。
正因为Web应用框架能够给应用提供良好的结构,使得人们无须再想法设法解决一些经典的
问题,而且系统的架构更统一、更容易理解,Web框架在如今的企业级应用开发中,往往扮演了重要的角色。
从开发角度考虑,具体Web框架的开发模型决定了整个开发过程。
因此,正确选用Web框架对于项目的成功往往起到了很关键的作用。
1.2流行框架分析 对于应用开发来说,降低开发成本、缩短开发周期、提高可维护性和运行效率是其追求的目标。
对于Web开发来说也不例外。
J2EE平台的出现在一定程度上减少了Web应用开发的成本和复杂度,但是其本身过于复杂的体系结构、难预测、 开发和维护成本的高昂,使得J2EE的架构方案常常无法让人满意。
为此,现在许 多的Web应用框架提供了更为便捷的方案,目前较为流行的框架有很多,这里我 们只列举其中的几个框架作为参考: Struts框架〔2】:Struts是一个老牌的Web应用框架,也是现在应用最多的丌发框架,它是由Apache软件基金开发并维护的
免费开源软件。
Struts具有高可配置性和一个不断增长的特性
列表。
它包括~个前端控制组件、一系列的动作类、动作映射、处理XML的实用工具类、服务器端Java Bean的自动填充、支持验证的Web表单。
国际化支持,生成HTML等。
Struts的主要缺点是缺少完善的权限设计,而且没有数据层的支持,它的使用必须完全依赖于具体的框架类,比如它必须对Action,ActionForm的继承实现和Web层的Servlet对象以及Struts本身的API紧耦合等。
事实上,Struts不能将领域对象作为FormBean使用,带来了很多额外的FormBean,导致了不必要的复杂性。
它的视图部分也只支持JSP,不能很好的支持其它视图技术。
Tapestry框架【3】:Tapestry也是Jakarta Apache基金会下面的一个子项目。
它是一个
开源的基于Servlet的应用程序框架,它使用组件对象模型来创建动态的,交互的Web应用。
一个组件就是任意一个带有jwcid属性的HTML标记。
其中Jwc的意思是JavaWeh Componento。
Tapestry使得Java
代码与HTML完全分离,利用这个框架开发大型应用变得轻而易举。
并且开发的应用很容易维护和升级。
Tapestry支持本地化,其错误
报告也很详细。
但Tapestry的主要缺点是开发
文档数量稀少而且内容不详尽,加之其自身的流转控制功能较为薄弱,所以至今缺少运用了此框架的企业级应用。
Turbine框架【4】:Turbine是由Apache Jakarta
开源开发小组提供的服务器端Java Web构架。
任何支持Servlet标准的服务器都可以平稳的运行Turbine(例 如:Tomcat,Resin,WebLogic)。
Turbine的开发包是TDK(Turbine Development Kit),它是由一组Jakarta Turbine子项目组成,列举如下:视图层采用Velocity 和JSP。
数据层采用的是Torque和Peers,利用XML技术将关系型数据库和Java Class互相映射。
控制层采用Turbine自带的应用框架。
Turbine最富有特色的部 分是拥有提供了大量Web系统服务功能的Service Framework。
但是Turbine也有 一些明显的弱点,首先它不依附于J2EE标准,因为它的项目启动时间比J2EE标 准形成要来的早,这样Turbine就有被边缘化的危险;其次它的
导航性比较差, 页面管理有一些凌乱。
1.3课题的研究内容 正如我们看到的,尽管这些框架在不同的领域中具有各自的优势,但它们对MVC的实现都有蓿不尽人意的地方。
如:Struts框架,虽然它提供了非常灵活的控制层和视图层,但缺乏对业务层的支持,但是整体可维护性、可测试性、可复用性多取决于如何处理和实现业务对象。
如果能够使用某种方式,将不同框架的优势融合到一起,并针对单一框架的不足使用其它架构对其进行相应的补充,就可以为Web应用开发提供更为有效的解决
方案。
本文的研究内容就是耍通过对Spring框架的分析,针对Struts框架缺乏对业务对象管理的不足。
将Spring与Struts进行整合,目的是提出一个框架整合方案,进而形成一个新的框架结构。
使得此框架在前端拥有Struts框架所提供的灵活的控制层和视图层,同时又S&够利用Spring中的IoC容器和AOP支持,使得实际的应用系统在业务上有着良好的可扩展性。
由此,本文的预期目标为: (1)通过对Spring框架的研究,探讨Spring与Struts整合的实现方法,并将两者集成到一起,从而形成一个新的体系结构。
同时验证此框架结构的可用性。
(2)将新的框架应用到实际中,指导实际项目的实现,从而使实际系统能够拥有灵括的视图层与控制层,并且使实际
系统在业务层具有良好的可扩展性。
1.4文童结构 第一章:介绍课题的背景及课题的预期目标。
第二章;简介MVC模式与Spring框架,包括MVC模式的理念,MVC模式 的发展以及它的优点。
同时简要介绍了Spring框架的基本构成,以及它对MVC 模式的实现和Spring框架的核心内容,其中Spnng框架的核心内容包括:IoC(控 制反转)模式和AOP(罚向方面编程)。
第三章:实现Spring与Struts的整合,形成新的框架结构井验证其可用性。
包括简要介绍Struts的基本结构及其优势,探讨Spring与Struts整合的实现方式, 给出相应的技术细节,并使用整合后的框架对一个既有系统进行改进以验证新框 架的可用性。
第四章:使用整合框架来指导实际系统的实现。
包括对实际系统的分析、设 计,及使用整合框架完成系统的实现。
从而验证整合框架在实践中意义,同时验 证以此框架完成的系统在业务层所具有的可扩展性。
第五章:总结本次
毕业设计的工作。
第五章:总结本次
毕业设计的
工作。
第2章Web框架模式的研究2.1 MVC模式2.1.1 MVO模式简介 MvC英文即Model-View—Controller,它是目前非常流行的一种软件设计模式。
早在70年代,IBM就推出了Sanfronscisico项目计划,其实就是MVC设计模式的研究。
MVC首先被应用在SmalITalk一80环境中,是许多交互和界面系统的构成基础,甚至在Microsoft的MFC基础类中也遵循了MVC的思想。
现在随着网路的飞速发展,MvC模式在Web应用开发中也得到了广泛的应用。
Mvc的
设计思想是将应用的输入、处理和输出流程进行强制的分离。
这样一个应用被分成:Model(模型)、View(视图)、Controller(控制)三个层次…。
图2.1 MVC模式 Fig.2.1 MVC pattem 视图(View):代表用户交互界面,对于Web应用来说,可以概括为HTML界面 4但有可能为XHT嘶L、XML和Applet。
随着应用的复杂性和规模性,界面的处理也变得具有挑战性·一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理a业务流程的处理交予模型(Model)处理。
比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。
模型(Model):就是业务流程/状态的处理以及业务规则的制定。
业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。
业务模型的设计可以说是〕vIVC最主要的核心。
目前流行的EJB模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。
它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。
对一个开发者来说,就可以专注于业务模型的设计。
MVC设计模式告诉我们,把应用的模型按一定的规贝Ⅱ抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据。
抽象与具体不能隔得太远,也不能太近。
MVC并没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提高重用性。
我们可以用对象编程来做比喻,MvC定义了一个顶级类,告诉它的子类你只能做这些,但没法限制你能做这些,这点对编程的开发人员非常重要。
业务模型还有一个很重要的模型那就是数据模型。
数据模型主要指实体对象的数据保存(持续化)。
比如将一张订单保存到数据库,从数据库获取订单。
我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。
控制(Controller):可以理解为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求。
划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。
控制层并不做任何的数据处理。
例如,用户点击一个链接,控制层接受请求后,并 不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要 求的视图返回给用户。
因此,一个模型可能对应多个视图,一个视图可能对应多 个模型【5-1们。
2.1.2 MVC的优点 大部分用过程语言比如ASP、PHP开发出来的Web应用,初始的开发模板就是混合层的数据编程。
例如,直接向数据库发送请求并用HTML显示,开发速度往往比较快,但由于数据页面的分离不是很直接,因而很难体现出业务模型的样子或者模型的重用性。
产品设计弹性力度很小,很难满足用户的变化性需求。
MVC要求对应用分层,虽然要花费额外的工作,但产品的结构清晰,产品的应用通过模型可 以得到更好地体现【1”。
首先,最重要的是应该有多个视图对应一个模型的能力。
在目前用户需求的快速变化下,可能有多种方式访问应用的要求。
例如,订单模型可能有本系统的订单,也有网上订单,或者其他系统的订单,但对于订单的处理都是一样,也就 是说订单的处理是一致的。
按MVC设计模式,一个订单模型以及多个视图即可解 决问题。
这样减少了
代码的复制,即减少了
代码的维护量,一旦模型发生改变, 也易于维护。
其次,由于模型返回的数据不带任何显示格式,因而这些模型也可 直接应用于接口的使用。
再次,由于一个应用被分离为三层,因此有时改变其中的一层就能满足应用 的改变。
一个应用的业务流程或者业务规则的改变只需改动MVC的模型层。
控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起完成 不同的请求,因此,控制层可以说是包含了用户请求权限的概念。
最后,它还有利于软件工程化管理。
由于不同的层各司其职,每一层不同的 应用具有某些相同的特征,有利于通过工程化、工具化产生管理
程序代码。
2.3 Spring框架简介 在我们进入具体的细节之前,先整体的了解一下Spring框架,包括它的来历、 出发点、以及其基本的构成。
2.3.1 Spri ng的出发点 Spring框架起源于其缔造者Rod Johnson 2002年所写的{Expert One—on—One J2EE Design and Development》一书的基础
代码。
在这本书中,Rod介绍他自己 的J2EE经验,并且解释了EJB为何常常葬送了整个项目。
他坚信一种轻量级的, 基于javabean的框架完全可以满足大多数开发人员的要求。
2003年2月,他把所描述的框架在SourceForge.net公开了源
代码,后来,这个框架就是演变成了著名的Spring框架【121。
在Spring之前,许多专用框架在各个壤域都有着很多出色的解决方案,比如:web框架、持久化方案、远程调用工具等等,然而将这些工具整合成一个全面的架构确困难重重,甚至成为一种负担。
Spring的目标是提供一种贯穿始终的解决方案。
将各种专用框架整舍成一个连贯鲍整体构架。
在这种意义上说,Spring框架就像一个黏合剂,将各个领域出色的解决方案黏合到一起,构成一个新的架构,更好的为应用服务【13】。
Spring力求不强女日任何架构风格,蔼是把选择的权利留给开发者,允许用户使用其中的单项功能,而不是把整个框架强加给用户。
Spring中的许多特性,如:7DBC抽象层或者Hibernation集成,都可以作为一个库单独使用,当然也可以作为SDring整体方案的一个部分。
从这里我们可以看出,Spring为我们提供了极大 的灵活性,我们即可以选择不同领域优秀的工具,又可以选择Spring本身的各个部分。
下面我们来看一下Spring的基本结构。
2.3.2 spring的基本结构 下图为Spring框架的基本结构图: 图2.z Spring框架的基本结构 Fig.2.2 Basic structure of Sprillg framework 由图中所示Spring框架有7个基本模块,这7个模块是相互独立的,每个模块都有一个对应的jar文件。
其中【“l: Spring Core:Spring框架最为基础、最重要的模块。
它提供loC容器,即依赖注入。
Spring Context:提供Bean的访问方式,并且添加了用于资源绑定、事件移植、资源装载和透明的装载上下文等功能。
Spring DAO:提供JDBC的抽象层,使得开发者不用去编写非业务功能的JDBC
代码,同时提供它同时能够提供编程方式和声明方式控制事务。
Spring ORM:为当前流行的O/R Mapping技术提供集成。
Spring AOP:实现了AOP联盟定义的AOP编程实现。
Spring Web:提供面向Web应用集成的功能。
这里的集成是初步的集成。
Spring Web MVC..提供MVC的实现。
2.4 Spr i ng对MVC的支持2.4.1 Spring的实现模式 对于现有较成熟的Model-View—Control(MVC)框架而言,其解决的主要问题无外乎下面几部分〔12-15】: (1)将Web页面中的输入元素封装为一个(请求)数据对象。
(2)根据请求的不同,调度相应的逻辑处理单元,并将(请求)数据对象作 为参数传入。
(3)逻辑处理单元完成运算后,返回一个结果数据对象。
(4)将结果数据对象中的数据与预先设计的表现层相融合并展现给用户。
各个ffgC实现固然存在差异,但其中的关键流程大致如上。
Spring的Web框架所支持的是MVC模式的第二种模式,即上文提到的JSP模 型二。
其具体的实现是围绕分发器设计的,DispatcherServlet将请求分发到不同 的处理器,框架还包括可配置的处理器映射,视图解析,本地化,主题解析,支 持文件上传等等,其具体的类如下图所示: AhFIrac,UrlBas,耐View卜——叫AbJtractV/Ⅲ HI〔ttpServletBean App“。
0玉。
。
。
凸 牟 会 ”…U一…,。
FrameworkServlet △ ’,”q’HlcauonLonmx E ) V-e|| e l,, .