三大框架的工作原理和协同性.docx
- 文档编号:3239830
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:21
- 大小:456.90KB
三大框架的工作原理和协同性.docx
《三大框架的工作原理和协同性.docx》由会员分享,可在线阅读,更多相关《三大框架的工作原理和协同性.docx(21页珍藏版)》请在冰点文库上搜索。
三大框架的工作原理和协同性
中文摘要
随着wed技术的迅猛发展,基于java的网络技术应用及wed2.0技术得到了广泛的传播。
安全,快捷,稳定的wed应用更加受到用户的喜欢。
如何开发满足用户需求的应用成为程序设计人员必须认真思考的问题。
在各大开源组织和用户网站的不断努力下,各种优秀的wed应用框应运而生了。
而Struts,Hibernate和Spring便是其中的佼佼者。
Struts旨在改善用户体验,提供良好的用户操作界面,处理系统前台操作。
Hibernate作为后台持久层,与数据库进行读取和存入操作,完成数据的交互。
而Spring则成为联系前台业务和后台逻辑的纽带,完成数据从前台到后台,再返回到前台的控制型操作。
这样三者就有机的结合起来各司其职又互相联系,统一而又快速的完成系统开发。
本课题在研究三大框架的工作原理和协同性,对各自的功能研究进行了详细的分析。
根据所做的研究进行了系统总体设计,框架选择与整合,编码实现到工程发布。
本文首先对设计模式进行分析,从而得到MVC框架的优点,对作为Viewd的Struts进行了深入研究,详述其如何作为前台而工作。
然后对于作为后台Model实体的Hibernate进行了研究,分析其如何同数据库字段绑定达到数据交互的目的。
最后对重要的Controller即Spring以及框架间如何整合作了详细的研究。
按照系统分层开发原理,将J2EE的三大开源框架根据功能层次分工进行整合,形成高效易用的SSH框架。
通过框架的使用,降低了代码是耦合性,减少开发周期,达到快捷,高效的开发,从而为程序开发者提供了便利。
关键词:
设计模式,耦合,Struts,Hibernate,Spring,框架整合
Abstract
Aswebtechnologyisdeyelopingrapidly,Theapplicationsofinternettechnologyandweb2.0technologybasedonjavaarespreadedwidely.Userspaymoreattentiontosafe,swiftandstablewebapplications.Sohowtodevelopapplicationstomeetuser’sdemandisaproblethatdevelopermustthinkaboutseriously.Bythegreateffortofsomebigopensourceorganizationsandportals,someexcellentframeworkscomeadout.Struts,Hibernate,Springarethetopofthem.Strutsisdesignedtoimproveuser’sexperiencesandofferthebestuserinterfacethenhandletheforegroundoperations.Hibernatetakesresponsibilitytoreadfromandwriteintodatabaseasbackgroundpersistanceandcompleteinteractionofdata.Springbecomesconnectionbetweenforegroundbusinessandbackgroundlogic,completecontrollingoperationsthatrcceivedatacomingfromforegroundthenreturnthemtoforeground.
Sothethrceofthemarecomblinedcompactly,andconnectwitheachothers.
Thatisconvenientforapplicationsdeveloping.
TheArticleiswrittentorescarchworkingprincipleandcollaborationofthreeframeworks,discusstheirownfunctiondetailedly.Accordingtotheresearch,thepaperdotheworkaboutwholedesingaboutsystem,choiceandcombinationaboutframeworks,codeimplementandrelease.thenthepaperimplememtstheonlinefilemanagementsystem.
Thepaperfirstlydiscussthedesignmode,gettheadvantagesaboutMVCmodelanddiscussStrutsabouthowitworksforforegroundasView,ThenresearchthebackgroundModelmockupHibernateabouthowitachicvesinteractionaimwithdatabasebyfieldbinding.FinallydescribethefunctionofcontrollerSpring,itplaysanimporlantpartinframeworkconnection.ThepapercombinesthethreeJ2EE
FrameworksaccordingtotheirdifferentfunctionrolestobeaconvenientSSHframeworks.Anditisgoodworkforthesysteminthisarticlc.Accordingtotheuseofframework,Itbecomesconvenientfordevelopertoreducecodecouplingandcycle,
Andtoincreaseefficiency.
Keywords:
DesignMode,Coupling,Struts,Hibernate,Spring,FrameworkIntegration
目录
第1章本课题研究的背景3
1.1本课题的研究背景3
1.2目前国内外研究现状4
第2章设计模式与Struts框架5
2.1设计模式5
2.2涉及模块分类5
2.3应用框架6
2.3.1框架定义6
2.3.2Struts实现MVC得机制7
2.3.3Struts的工作流程9
2.3.4Struts的功能实现10
第三章数据持久层Hibernate开发11
3.1数据持久化层简介12
3.2数据持久层13
3.2.1Hibernate原理13
3.2.2Hibernate实现方式14
第四章Spring原理及框架整合15
4.3.1Struts与Spring的整合16
4.3.2Hibernate与Spring的整合17
第五章总结和展望17
5.1研究结果17
5.2存在的不足18
5.3框架的未来18
第1章本课题研究的背景
1.1本课题的研究背景
目前很多应用系统是建立在Web的基础上,基于B/S结构的Web应用程序也成为Internet上使用最为广泛的应用开发技术。
而J2EE平台的成熟,为Web应用程序更进一步的发展提供了更广阔的空间。
J2EE多层架构自推出以来,逐渐得到了广泛的应用,形成了一个面向企业级的分布式,多层次的软件体系结构规范成为企业应用开发的标准。
J2EE的核心思想有两个:
一个是分层的思想,另一个是构件的思想。
软件分层有利于软件开发的分工,使大型系统中所需的技术相互隔离。
J2EE的每一层又定义了相应的软件开发规范,通过构件来实现层的功能,构件技术的应用大大地提高了软件的可重用性。
在多层J2EE体系结构的设计中,普遍存在着程序可重用程度低,维护工作繁琐,应变能力较弱等不足。
同时,多层Web应用软件需要面对复杂的网络环境,多样化的用户需求,灵活的业务模式,复杂的业务流程,众多的组织机构及层次,角色分工等问题,在业务和技术上也是复杂多变的。
因此,在基于组件的J2EE平台充分内置了灵活的情况下,如何组织应用程序以实现记得高效的应用程序升级,维护和扩展,以及如何让不懂的程序代码的人员避开程序数据,成为开发中首先要解决的问题。
而且,还要充分考虑到多层结构的特殊性,各层之间需要密切配合才能完成最终功能,又要在实际开发中尽可能的使各层的开发相对独立,减少各层之间的耦合程度,避免开发人员相互制约。
采用框架构件技术则是解决上述弊端的一个有效方案。
框架是为其他平台提供各种接口和功能服务的基础构件,扮演着至关重要的角色,起着关键的作用,是产品的中流砥柱;框架是采用J2EE技术的一样服务器,完全面像对象的JAVA语言开发的多层体系结构的应用系统。
Struts+Spring+Hibernate是适用于大型Web应用开发的架构技术,比之传统的MVC模式,其优点是最大限度的降低系统各部分之间的耦合性,增强系统的可扩展性与可维护性,提高代码重用率。
Struts是一个MVC模式的框架,它将业务代码与视图代码分离,有效地优化了系统结构,提高了系统的扩展性,降低系统复杂度与维护难度。
Hibernate是一个对象、关系数据库映射工具,通过Hibernate的使用,能够很好地解决面对对象编程语言与关系数据库一起使用可能带来的种种麻烦,使得程序设计人员可以减少对关系数据模型的依赖,致力于业务逻辑的开发。
Spring框架的使用将J2EE层次结构中的业务层分离为业务逻辑层和数据持久层,这样业务逻辑便交给Spring处理,而数据访问则交给Hibernate处理,使层次结构更加清晰,便于系统的维护和扩展
1.2目前国内外研究现状
为了应对由于市场信息变化的需求,企业对Web应用程序的可扩展性要求越来越高,因此对传统的Web应用技术提出了技术挑战。
传统的Web应用开发将页面显示、业务逻辑和数据处理都集中在页面代码中,导致应用程序的耦合性很强,从而引起Wen应用的扩展和维护极其困难,同时也不利于开发人员分工协作。
传统的Web应用开发在大型的企业级应用中愈加显得力不从心。
随着J2EE平台的出现,基于B/S的多层Web体系结构逐渐发展成熟起来,多层Web应用的开发已成为主流。
但是,在多层Web体系结构的设计中,普遍存在程序可重用程度低、维护工作繁琐、应变能力较弱等不足;同时,多层Web应用软件需要面对复杂的网络环境、多样化的用户需求、灵活的业务模式、复杂的业务流程、众多的组织机构及层次、角色分工等问题,在业务和技术上也是复杂多变得降。
因此,如何组织应用程度以实现简单高效的应用程序升级
维护和扩展,是当前Web技术发展的热点之一。
第2章设计模式与Struts框架
软件系统的设计不仅应对当前处理的问题有针对性,还要对将来的问题和需求也有足够的通用性。
一个软件系统能否适应业务的发展和需求的变化时决定其生命力的关键因素。
为此,在软件复用领域,提出了设计模式和框架的概念。
2.1设计模式
设计模式是对面向对象设计反复出现的问题解决方案。
这个术语是在十九世纪代出ErichGamma等人从建筑设计领域引入到计算机科学种来的。
设计模式通常描述了一组相互紧密作用的类与对象,设计模式提供一种讨论软件设计的公共语言,使得熟练设计者的设计经验可以被初学者和其他设计者掌握。
2.2涉及模块分类
设计模式描述了问题、在什么条件下使用该方案及其效果,它还给出了实现要点和实例。
该解决方案是解决该问题的一组精心安排的通用的类和对象,再经定制和实现就可用来解决特定上下文中的问题。
它使得系统分析和设计人员积累的优秀设计思想和丰富的设计经验可以保存下来,可以供人学习,从而得原来看上去既深奥又抽象的设计也可得到最大程度的复用。
由于存在众多的设计模式,在丽都和抽象层上各部相同。
如果能用一种方式将它们组织起来分类以便于对各种相关的模式进行引用,这有助于更快学习目录中的模式,且对发现新的模式也有指导作用。
Java设计模式的分类见表2-1。
2.3应用框架
近些年计算机的运算速度和网络带宽飞速增长,可是大型软件的设计和开发依然是错综复杂并且代价昂贵。
很多精力和花费都消耗在整个行业一些功能重复的软件开发上。
特别是随着硬件架构、操作系统、通信平台的多样性使得从头建立一个正确的、可移植、高效的应用系统越来越复杂。
近些年框架技术日益受到人们的重视,因为框架技术能最大限度地发挥复用的技术且不失面向对象技术的灵活性,并且已经在很多大型软件上使用。
2.3.1框架定义
框架是一个应用软件系统的部分或整体的可用设计,具体表现为一组抽象类以及其实例之间的相互作用方式。
框架是能出开发人员根据需要定制的应用程序的轮廓。
从构件的角度看,一个框架有一组协作构件组成。
很多领域的开发人员已成功地开发了不少应用框架或使用框架技术的系统。
比如微软基础。
2.3.2Struts框架介绍
Web应用Struts作为一个开放源代码的应用框架,在最近几年得到了飞速的发展,在JSPWeb应用开发中应用的飞上广泛,它已经成为JSP框架的事实上的标准【1】
(2)。
那么,究竟是什么Struts?
要回答这个问题ihaide从JSPWeb应用的两种基本的结构模式:
JSPModel1和JSPModel2说起。
2.3.1JSPModel1和JSPModel2
尽管MVC设计模式很遭殴就出现,但在Web应用的开发中引入MVC却是步翻维艰。
主要原因是在早期的Web应用的开发中,程序语言和HTML的分离一直难以实现。
例如在JSP网页中执行业务逻辑的程序代码和HTML表示层数据混杂在一起,因而难分理出单独的业务模型。
这使得维护JSP网页非常困难,很难满足用户的变化性需求。
在早期的Javaweb应用中,JSP文件负责业务逻辑、控制网页流程并创建HTML,参
2.3.2Struts实现MVC得机制
Struts实质上就是在JSPModel2的基础上实现一个MVC框架。
在Struts框架中,模型出实现业务逻辑的JavaBean或EJB组件构成,控制器出Actionservlet和Action来实现,视图有一组JSP文件构成。
图2-6显示了Struts实现的MVC框架
1.视图
视图就是一组JSP文件。
在这些JSP文件中没有业务逻辑,也没有模型信息,只要标签,这些标签也可以是标准的JSP标签或客户化标签,如Struts标签库中的标签。
此外,通常把Struts框架中的ActionFormBean也划分到视图模块中。
ActionFormBean也是一种JavaBean,除了具有一些avaBean的常规方法,还包含一些特殊的方法,用于验证HTML表单数据以及将其属性设置为默认值。
。
Struts框架利用ActionFormBean来进行视图和控制器之间表单数据的传递,参见图2-7。
Struts框架把用户输入的表单数据保存在ActionFormBean中,把它传递给控制器,控制器可以对ActionFormBean中的数据进行修改,JSP文件使用Struts标签读取修改后的ActionFormBean的信息,重新设置HTML表单。
4.Struts的配置文件struts-config.xml
一个用户请求是通过ActionServlet来处理和转发的。
那么,ActionServlet如何决定把用户请求转发给哪个Action对象呢?
这就需要一些描述用户请求路径和Action映射关系的配置信息了。
在Struts中,这些配置映射信息就存储在特定的XML文件atruts-config.xml中,每一个Action的映射信息都是通过一个
这些配置信息在系统启动的时候就被读入内存,供Struts在运行期间使用。
在内存中,每一个
2.3.3Struts的工作流程
对采用Struts框架的Web应用,在Web应用启动时就会加载并初始化ActionServlet,ActionServlet从struts-config.xml文件读取配置信息,把他们存放到各种配置对象中,例如VDE映射信息存放在ActionMapping对象中。
当ActionServlet接收到一个客户请求时,执行如下流程。
(1)检束和用户请求匹配的ActionMapping实例,如果不存在,就返回用户请求路径无效的信息。
(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中。
(3)根据配置信息决定是否需要表单验证。
如果需要验证,就调用ActionForm的validate()方法。
(4)如何ActionForm的validate()返回null或返回一个不包含ActionMessage的ActionErrors对象,就表示表单验证成功。
(5)ActionServlet根据ActionMapping实例包含的映射信息决定将请求转发给哪个Action。
如果相应的实例不存在,就先创建这个实例,然后调用Action的exccutc()方法。
(6)Action的exccutc()方法返回一个ActionForward对象,ActionServlct将直接把请求转发给ActionForward对象指向的JSP组件。
(7)ActionForward对象指向的JSP组件生成动态网页,返回给客户。
对于以上流程(4),如果ActionForm的validate()方法返回一个包含一个或多个ActionMessage的ActionErrors对象,就表示表单验证失败,此时ActionServlet将直接把请求转发给包含用户提交表单的JSP组件。
在这种情况下,不会在创建Action对象并调用Action的execute()方法。
2.3.4Struts的功能实现
在一个工程里要使用Struts框架,必须在该工程下的web.xml对Struts框架,要用到的参数进行配置,一般情况下可以使用Myeclipse自动生成这些配置。
如下:
这样配置好以后就能使用Struts框架,在Struts-config.xml中配置参数了。
1.Struts-config.xml文件的配置
Struts的核心部分是Struts-config.xml,它不但描述了MVC模型,定义所有视图层和控制层之间的接口(ActionForm),与控制层和模型层接口(Action)结合。
还可以定义一些附加组件,如国际化信息的次元配置(Resources)文件,标签库信息以及验证框架等。
(1)表单Bean
标签中定义表单Bean,“scfsModifyForm”就是一个具体的表单Bean对象,表单Bean中定义的变量与用户请求页面中的属性对应。
表单Bean通过常用作Strnts框架的后台验证。
第三章数据持久层Hibernate开发
在Java技术中有许多方法可以对数据进行持久化,持久层也是Java应用程序中最重要的部分之一。
3.1数据持久化层简介
J2EE的三层结构是指表示层(Prcsentation),业务逻辑层(BusinessLogic)以及基础架构层(Infrastructure),这样划分非常经典,但是在实际的项目开发法中,开发者通常对三层结构进行扩展来满足一些项目的具体要求,一个最常用的扩展就是将三层体系扩展为五层体系,即表示层(presentation),控制中介层(Controller/Mediator)、领域层(Domain),数据持久层(DataPersistence)和数据源层(DataSource)。
它其实是三层架构中增加了两个中间层。
控制/中介层位于表示层和领域层之间,数据持久层位于领域层和基础架构层之间。
由于对象范例和关系范例这两个范例之间存在“阻抗不匹配”,所以把数据持久层单独作为J2EE体系的一个层提出来的原因就是能够在对象—关系数据库之间提供一个成功的企业级映射解决方案,尽最大可能弥补这两种范例之间的差异。
三种持久层主流解决方案:
(1)JDBC
许多开发者用JDBC进行数据程序开发此种方式很多情况下都使用DAO模式,采用SQL进行查询。
虽然用此种方式可以使用程序代码与具体的数据库厂商和数据库位置无关,不过JDBC是低级的数据库访问方式,JDBC并不支持面向对象的数据库表示。
JDBC数据库表示完全围绕关系数据库模型。
在大型应用程序的DAO中书写这样的代码,维护量是非常大的。
(2)EJB
在J2EE的规范中,为EJB定义了两种持久化的解决方案:
一种是BMP,另一种是CMP。
其中CMP不需要将SQL语句加入到代码中。
目前,在采用J2EE的应用中,EJBCMP方式得到广泛应用。
更加引人注意的是,随着EJB规范的发展,CMP也包含了一些高级关系的内容。
但是,CMP的使用比较复杂,对很多开发者来说比较难以掌握。
而且,不是所有的情况下都适合在系统中采用EJB,而且想要清楚的了解EJB规范也是非常费时的。
在用EJB编码前,先要让专家理解API,然后需要了解每一个容器部署时所要关注的技术。
此外,许多情况下商用容器的性能和支持也不是很好。
(3)JDO
JDO是一个存储java对象的规范,JDO规范1,0的提出可以使程序员将精力集中在设计Java对象模型,然后再企业应用软件架构的不同面层中存储传统的Java对象(PlainOldObjects,简称POJOS),采用JDOQL语言进行SQL操作。
一些公司(包括sun)企图根据JDO规范进行设计并实现JDO产品,然而都不能进行很好的实现,并且性能优化上比较差。
3.2数据持久层
由于上述各持久层存在缺陷,所以J2EE模型中出现了比较经典而且实用的持久层框架Hibernate。
随着网络的发展,Hibernate越来越受到开发者的欢迎,运用Hibernate作为数据持久化的开源框架也越来越多。
现在面向NET版的NHibernate也已经出现。
Hibernate是对JDBC的较量级的装封,可以应用在任何JDBC的场合,不但如此,Hibernate还可以在EJB中取代CMP,完成数据持久化。
在具体的项目中,Hibernate还可以与大多数的应用平衡的集成,同时Hibernate还独立作
战能力,可以用一般的测试程序进行测试。
在协同作战上,Hibernate能和众多的主流框架集成,最常用的配合方式是
Hibernate和Spring。
Hibernate实现数据的持久化,能够实现数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 框架 工作 原理 和协 同性