电子商务平台毕业设计_第1页
电子商务平台毕业设计_第2页
电子商务平台毕业设计_第3页
电子商务平台毕业设计_第4页
电子商务平台毕业设计_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

沈阳理工大学学士学位论文摘 要本毕业设计采用SSH(Struts+Spring+Hibernate)整合框架以及mvc模式来实现网店管理,消费者注册、购买等服务的平台系统。在表示层中,首先通过JSP页面实现交互界面,负责传送请求和接收响应,然后Struts根据配置文件将接收到的Request委派给相应的Action处理。在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型组件和该组件的协作对象数据处理组件完成业务逻辑。 最后,经过对市场系统进行详细的需求分析、体系架构设计后,实现了这个网上购物系统,前台功能包括注册和登录、商品浏览、个人信息管理等;后台功能包括商品管理、订单管理等。通过实践,很好的整合了这三个框架,将其应用到实际的项目中,方便以后更好的工作,体现了较高的应用价值。关键词:电子商务平台; Spring; Struts; Hibernate; JavaAbstractThis graduation assignment used SSH(Struts+Spring+Hibernate) framework.What is more,it achieve management of online store,customers register and purchasing service based on MVC system and SS framework.In the presentation level , the first step is used JSP website to complete interactive interface, which charge for request and response.Then the Struts according to already file transform the request from the Action Servlet to pointed Action.In the processing level,Management service module Spring IOC will offer the project module Model and DAOmodule to Action to complete processing and offering the modules included business dealing,buffer pool which aims to improve the system efficiency and ensure complement of the data. Finally, we achieved this online-shopping system which is supported by the varieties of technologies referred above,after analyzing the requirement of market system and design the framework.This system divide into proscenium and background operation.In the proscenium,it service for register,log in,scanning goods,personal information management.Background operation is used for goods management,goods classify management and orders management.We successfully put three framework into practice and apply them into reality, We have a rich experience of handling the BAE data base which is be helpful to our future job.In general, it has a great application value.Keywords : E-commerce; Spring; Struts; Hibernate; Java 目录1 研究背景与研究意义21.1 研究背景21.2 研究意义41.3 主要工作42 需求分析52.1 平台设计目的52.2 平台设计需求52.2.1 用户体验需求52.2.2 平台功能需求52.3 运行环境72.3.1 硬件环境72.3.2 软件环境73 平台整体规划83.1 模式分析83.1.1 模型83.1.2 视图83.1.3 控制器83.2 SSH分析与整合93.2.1 Struts2框架93.2.2 Hibernate框架113.2.3 Spring框架133.2.4 Spring整合Hibernate163.2.5 Spring整合Struts2183.2.6 Struts2、Hibernate和Spring的整合开发193.3 后台逻辑功能设计203.3.1 项目目录结构203.3.2 生成数据库表的映射对象类203.3.3 创建对应映射文件213.3.4 DAO层实现213.3.5 SERVICE层实现223.3.6 分页Bean的代码实现223.3.7 jdbc数据库属性文件配置233.3.8 用户验证ajax异步校验代码233.3.9 console部分打印日志信息243.4 数据库设计244 功能实现294.1 前台功能实现294.1.1 人机交互效果图294.1.2 实现代码354.2 购物车、订单功能实现394.2.1 购物车、订单功能实现效果图394.2.2 实现代码40结束语42参考文献44附录4657引 言随着网速的不断提升,前台界面的不断完善、美化,后端设计的渐渐优化,网上购物必然会给喜欢网上购物的群体带来更好的体验,电子商务也必然是日后销售的主要方式。同时网上购物的方式也会给客人们提供更多地时间和精力做更重要的事情,给商家提供更方便的条件去专注的提高商品的质量。基于J2EE的毕业设计管理系统旨在解决传统的学生毕业设计管理过程中存在的论文选题开放性差、表格不规范、论文相关信息汇总难度高、人员摄入量大、工作进度缓慢等问题,并结合毕业设计管理过程中的具体特点和个性化需求,运用计算机专业技术开发了基于 J2EE 的毕业设计管理系统,该系统具备高效性、便捷性等特点。实践证明,开发的系统软件能满足复杂的网上毕业设计管理要求,学生和老师不用下载客户端即可进行毕业设计相关的操作。基于java的电子商务网站设计及开发可以使学生尽早的体验进入公司后的模式,怎么设计网站,怎么优化性能,怎么搭建开发平台、运行环境等。通过实践,了解更多相关行业的技术手段、代码规范,了解更多地框架特点,了解数据库的使用和设计等。更好的进入企业,实现自己的价值做准备。 1 研究背景与研究意义1.1 研究背景随着信息化世界的到来,传统商务模式受到巨大的冲击。越来越多的企业和个人,在 Internet 开放的网络环境下,以一种基于浏览器-服务器应用的新模式,实现消费者网上购物,商户之间出现网上交易和在线电子支付的新的商业运营模式:电子商务。目前做得比较成功的电子商务平台有:当当网,阿里巴巴,淘宝,国美在线,亚马逊,eBuy等。电子商务在中国也有一定的发展,目前在国内也有很多很好的电子商务平台,通过分析国内的电子商务平台可知,目前国内的电子商务做的都是集合型,一个平台会出售各个方面的商品。一些较好的网购平台,如:京东商城,淘宝网,拍拍网,红孩网等电子商务网站,涉及商品门类都很多,他们的共同特点就是只有产品的展示与订购,没有产品厂商的。目前中国能用上电子商务平台的都是一些大中型的企业,而大部分的中小型,特别是小型企业还是用着以前的生意模式,靠朋友,靠关系,靠老客户来维持企业,这种模式在过去的时代会有一定的优势,但在信息网络时代这种模式缺乏主动性,往往会使企业处在被动的状态1。像阿里巴巴这样的大型电子商务平台是能很好地帮助企业做宣传,联系客户,但是阿里巴巴基本上是面对大中型的企业,每年的管理费用都非常高,对于一些中小企业要承受一笔高的资金是很困难的。为了能够上中小型企业特别是小型企业能够用上电子商务平台,我们特地开发此系统,使中小型企业也能做到生产,宣传,销售一条龙2。关于电子商务平台的设计,现有Java,php,.net三种主流的语言。由于都是用于web开发,他们相互竞争的同时也相互吸取优点,经过融合使自身变得越来越强大。比如当你用C#,php,java开发的时候,你会发现在他们之间转换,根本就没有语言障碍,甚至连好多类或方法都是同名或相似。从应用层面上来讲,php是专门用于web开发的一门技术/语言,用于制作个人网页。他是一门轻量级的语言,专一于web开发,汲百家之长,由于完全开源,因此具有良好的群众基础和发展潜力;java的的确确就是一门语言,可以用于各方面的开发,和c+是平辈web开发只是他的应用的一部分;是一项技术,他是脱离语言的,可以用语言C#和VB设计, 是由微软推出,集各家所长,asp技术和.net组合而来。由于.net fromwork 技术的引入,的开发变得特别简单,但是由于过多的拖拉控件使程序员只懂表面控件二不了解内部原理,所以很大程度的限制了程序员的发展。首先,java是一门采用解释执行的运行方式运行的语言,在web领域有很高的利用率;其次,ASP.NET是一门技术,在windows里运行,会产生费用,而php和java是免费的,比较拘泥。而php就是一门专门用于web开发的语言/技术。在有语言基础的条件下学web,php比较直接,java web应用适用范围更广。开发时,Java 开发效率成本高,主要的好处是配合oracle效率非常不错,但现在由于MySQL的开源以及免费,绝大部分的公司会选择MySQL,适合大型web和超大型web。php开发成本一般可以更快的生成动态页面,配合mysql效率也不错,适合中型和偏大一点的 开发非常之快,可以配合sqlserver使用,适合中小型web3。关于数据库现在主流的有oracle,MySQL,SQL Server三种,本平台采用MySQL数据库:Oracle的数据文件包括:控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件。所有文件都是二进制编码后的文件;Oracle能在所有主流平台上运行(包括 windows)。完全支持所有的工业标准。采用完全开放策略。并行服务器可提供高可用性和高伸缩性的簇的解决方案也可以把数据库移到UNIX中。从安全性来说,获得最高认证级别的ISO标准认证。多层次网络计算,支持多种工业标准,可以用ODBC,JDBC,OCI等网络客户连接,操作简便4。MySQL的最大一个特色,就是自由选择存储引擎。每个表都是一个文件,都可以选择合适的存储引擎。常见的引擎有 InnoDB、 MyISAM、 NDBCluster等5。但由于这种开放插件式的存储引擎,比如要求数据库与引擎之间的松耦合关系。从而导致文件的一致性大大降低。在SQL执行优化方面,也就有着一些不可避免的瓶颈。在多表关联、子查询优化、统计函数等方面是软肋,而且只支持极简单的HINT,主要应用场景就是互联网开发。SQL Server的数据架构基本是纵向划分,分为:协议层,关系引擎,存储引擎, SQLOS。SQL执行过程就是逐层解析的过程,其中Relational Engine中的优化器,是基于成本的(CBO),其工作过程跟Oracle是非常相似的。在成本之上也是支持很丰富的HINT,包括:连接提示、查询提示、表提示。其最大的优势就是在于集成了MS公司的各类产品及资源,提供了强大的可视化界面、高度集成的管理开发工具6。SQL Server的缺点:只能在windows上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。Windows9X系列产品是偏重于桌面应用,NT server只适合中小型企业。而且windows平台的可靠性,安全性和伸缩性是非常有限的;它不像unix那样久经考验,尤其是在处理大数据;并行实施和共存模型并不成熟。很难处理日益增多的用户数和数据卷。伸缩性有限;没有获得任何安全证书;多用户时性能不佳;C/S结构,只支持windows客户,可以用ADO,DAO,OLEDB,ODBC连接7。1.2 研究意义本系统采用SSH(Struts,Spring,Hibernate)框架来开发。SSH框架是目前J2EE领域里最热门而且用得较为成熟的一套开源框架,它是基于MVC设计模式之上,在充分发挥MVC设计模式优点的同时,也创造出了自己的开发特点,降低了应用程序的耦合性,更进一步提高了应用程序的复用性、移植性、灵活性、扩展性和应用性能8。SSH是一套轻量级的开发框架,相对于EJB重量级开发框架,SSH在继承了它的优点的同时,在开发和执行效率上都有了相当程度的提高,同时对于开发者而言,它比EJB更容易学习和撑握,开发速度也更快。目前Struts和Spring发展到2.0版本,Hibernate发展到3.0版本,SSH框架也正在不断地进行优化和升级,运行也越来越稳定。1.3 主要工作根据需求分析将商家所列出的功能体现到代码中,用前台的jsp界面展现出来。首先,根据需求分析进行技术选型:数据库:MySQL(开源,免费,体积小且速度快的MySQL数据库);语言:Java(面向对象、分布式、解释型、可靠、安全、平台无关、可移植、高性能、多线程);开发环境:myeclipse2013(插件少,比较稳定);框架:Spring Struts2 Hibernate。其次,根据商家的需求设计demo,并且设计数据库表结构。最后,根据设计好的表结构以及demo实现逻辑功能,将前端展示与后台数据联系到一起,完成一个真正的购物平台。2 需求分析2.1 平台设计目的本平台设计目的在于建立一个以SSH框架为基础,结构灵活、可复用、可扩展,高效开发且轻量的电子商务应用平台。平台框架为本人设计的主要目标,能够根据业务实际需求变化灵活操作平台功能模块。2.2 平台设计需求软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。通过对应用问题及其环境的理解与分析,为问题涉及的信息、功能及系统行为建立模型,将用户需求精确化、完全化,最终形成需求规格说明,这一系列的活动即构成软件开发生命周期的需求分析阶段9。2.2.1 用户体验需求作为一个购物平台,最终的使用者是购买商品的人,那么他们的体验就显得尤为重要。一个好的人机交互体验可以给这个网站增加不少的亮点:1) 界面美观大方,不能过于花哨,由于本网站用于销售蛋糕,所以界面应尽量给人一种温馨甜美的感觉。2) 操作简单,导航等提示信息言简易懂,尽量减少页面跳转,避免找不到已选好的商品等令人烦躁的事情发生。3) 可以根据用户的想法进行查询,分类,节省客人的时间,增加体验值。4) 及时更新商家商品的上架、下架信息,避免出现没有客人要预定的商品的情况。2.2.2 平台功能需求功能需求(functional requirement)就是编程人员必须实现的软件功能,使得用户能实现他们的想法,从而满足了业务需求10。针对本系统来说,本系统需要完成的功能是基于SSH框架基础之上来构建购物的整个流程,然后,利用面向对象的程序设计方法以及用户界面层、业务逻辑层、数据持久化三层模式完成该平台的设计与实现,减轻后续开发过程中的代码维护工作。1) 首页:为企业提供一个网站首页,在上面显示网站的重要信息包商家LOGO,用户的登录,用户的注册,主要商品分类,商家生产环境等。2) 用户的注册:主要针对未注册的用户,完成注册功能使用,在注册过程中,需要进行数据的前台非空校验,电话号码等数据格式的检验,及使用AJAX完成用户名是否存在的异步校验。在校验通过后即可完成注册,注册成功后转回登录界面进行登录;失败则提示失败信息等。3) 用户的登录:已经注册的用户,输入用户名和密码登录。4) 用户的退出:针对已经登录的用户,退出该用户的权限空间。5) 首页商品展示:显示全部商品,方便不知道自己想要那种商品的客人挑选自己喜欢的商品。6) 分类商品展示:根据某个分类的信息去展示商品。可以方便用户根据自己的喜好快速定位相应商品,节省时间和不必要的麻烦。7) 商品详情展示:当点击某个具体商品的时候,可以显示商品的具体内容,包括:商品类型,尺寸,价格等信息。8) 购物车:此功能可以为用户提供购物功能,方便用户根据自己需要,将喜欢的商品添加到购物车,当然也可以从购物车中将多余的商品移除,甚至清空整个购物车,方便重新选择商品。9) 订单:登录用户可以对自己喜欢商品进行购买,产生订单,在线支付等。以及可以查询自己的订单。10) 商家的发货:后台管理商家的发货信息,完善一整套的购买流程。 图2.1 购物流程2.3 运行环境运行环境分为硬件环境和软件环境,一个好的硬件环境可以提高服务的性能,一个好的软件环境可以使开发者更加高效的开发,以及更好的维护。2.3.1 硬件环境服务器端的最低配置是由建立站点所需的软件来决定的,本网系统服务器端的最低配置如下: 处理器:Inter (R) Core(TM) i5-3337U CPU 1.80GHZ 1.80GHZ。 内存:4.00GB系统:Windows7 64位操作系统 硬盘空间:160G 显卡:SVGA显示适配器2.3.2 软件环境操作系统:Windows 7 网站服务器:Tomcat6.x + jdk7.x 数据库管理系统:MySQL5.x 3 平台整体规划平台整体分为前台和后台,主要重点在与前台数据的显示以及购物的整个流程。通过简洁大方,风格统一的前台展示给购物者一个愉快的购物氛围,分为:商品展示,购物车,订单,企业文化,新手指南等模块。后台则用于实现商品的发货管理。3.1 模式分析模式描述了环境中不断重复发生的问题,然后描述解决这些问题的核心解决方案,以后就可以重负使用这些解决方案,而不需要在重复去做,即明确了所关注问题的使用范围,指引设计师何时、如何、为何采用干这个解决方案,提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性,提高开发人员的工作效率和代码质量12。MVC是一种将应用程序的逻辑层和表现层进行分离的方法。MVC 式的出现实现了功能模块和显示模块的分离。3.1.1 模型模型是应用程序的主体部分,分为业务模型和实体模型,用于持久化业务数据。一般来说,你的模型类将包含增删改查数据库信息的功能13。3.1.2 视图视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。V层用来数据展示,本平台中V层采用JSP技术。通过JSP技术可以很方好地把数据展示在web浏览器上。JSP把html语言和java语言进行分离,既达到了解耦的目的,也可以使后续系统的维护变得更方便。把流程控制都放到Action层,把业务逻辑处理放在service层中,充分利用Struts2技术,在html页面中使用Struts2标签来展示数据,减少在html页面上写java语句14。3.1.3 控制器控制器是模型、视图以及其它任何处理 HTTP 请求所必须的资源之间的中介。由于运用MVC的应用程序的三个部件是相互对立,改变其中一个不会影响其它两个,所以依据这种设计思想你能构造良好的松耦合的构件15。 本系统是在MVC模式基础上来进行分层,由于本系统开发的工具是MyEclipse,在建立工程时开发工具就已经初步把系统分成MVC三层结构。模型层由Models层来充当,该层主要是用来存实体Bean类和Hibernate影射文件。通过该层开发者很方便地对整个工程下的Bean进行管理,同时也非常方便地对Hibernate配置文件进行影射,极大的提高了开发的效率,同时对以后系统的维护也非常方便。C层主要是用来做流程和逻辑控制,也是整个系统的核心层。所有进出系统的访问都要经过这一层的控制。本系统对C层时行了一些改进,我们把控制层又细分为Action层,service层和Dao层。Action层只管流程控制,Service层只管逻辑控制,Dao层只管与数据打交道,各施其职,每个层次只管自己的事情,这样能使整个系统的层次非常分明,不会出现功能的混淆16。让开发者和维护者在编写代码的时候非常清晰。MVC模型的局限性,MVC将业务逻辑层和表现层分开,的确能很好地松耦合,但这种做法有时也会增加开发和运行开销。首先MVC采用多分层结构,这样就给开发带来了难度,增加了开发的时间,并且如果在层次设计的时候设计得不好,反而会降低程序运行的效率。另外多层次结构在运行的时间没有单层次结构的程序运行的速度快,采用MVC模式如果分层太多,是会降低程序运行速度。所以我们做开发的要因物施用,根据需要使用合适的模式来开发17。MVC模式它提出来的初衷就是为大型软件设计而提出的,它对那些需要经常复用,扩展的大型软件是非常有好处,但对于那些复用性,扩展性很少的小软件,特别是对于开发时间要求比较紧的情况下,采用MVC模式,其实不是一种明智的选择。3.2 SSH分析与整合3.2.1 Struts2框架Struts2以webwork的设计思想为核心,使用拦截器(filterdispatcher)做为其中心处理器将Action类和servlet API进行了分离。Struts2是一个具有很好实用价值的Web MVC框架,它减少了直接运用MVC模式来开发Web应用的周期。重要的是它是一个开源框架,方便开发者深入研究了解其机制,越来越广泛的接受和应用。而且它提供一个好的控制器和一套定制的标签库Taglib,着力在控制器和视图上的应用,完美的体现了MVC设计思想。提供集中统一的权限控制、国际化提示和消息、输入校验和日志记录等技术支持。另外,它对其他技术和框架具有良好的融合性。如能与EJB、JDBC和Hibernate等数据库访问技术相结合,利用集成技术减少数据库的工作量18。Struts2的体系结构如图所示:Results/result TypeBrowserserViewserControllerDispatcher FilterJSPInterceptorsFreemarkersetXxx()Execute()ValueStack/OGNLModelgetXxx().Action图3.1 Struts2体系结构Struts2核心实现:Struts2主要是用来控制整个平台运作流程。由三部分组成,核心控制器FilterDispatcher、业务控制器以及用户实现的业务逻辑组件。FilterDispatcher作为Filter运行在Web中,负责拦截用户请求,当请求到达时,该Filter会过滤用户请求。请求将被转入Struts 2框架处理。Struts 2框架获得了请求后,将根据请求的前面部分决定如何调用Action类19。Struts2处理请求步骤:1) 客户端提交一个(HttpServletRequest)请求。2) 请求被提交到过滤器(Filter)。3) FilterDispatcher是控制器的核心,就是MVC的Struts 2实现中控制层(Controller)的核心。4) FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个(HttpServlet Request)请求,如果ActionMapper决定需要调用某个Action,FilterDispatcher则把请求的处理交给ActionProxy。5) ActionProxy通过Configuration Manager(struts.xml)询问框架的配置文件,找到需要调用的Action类6) ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action。但在调用之前,ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)。7) Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果result。Web.xml中的Struts配置: struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* 3.2.2 Hibernate框架ORM(对象关系数据库映射)对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。它完成了面向对象的编程语言到关系型数据库的映射21。通过它使我们以面向对象的方式操作持久化对象,而ORM框架负责转换成对应的SQL操作。Hibernate概述Hibernate是轻量级持久层解决方案,是流行的ORM框架,对JDBC进行轻量级的对象封装,使Java程序员可以以面向对象的方式操作数据库。Hibernate可以管理Java类到DB表的映射,完成对数据库的增删改查操作,减少人工使用SQL、JDBC处理数据的时间。Hibernate体系结构Hibernate实际上是提供数据库服务的中间件。Hibernate将用户从繁琐的JDBC访问中解脱出来,底层数据库连接获取,数据访问的实现、事务控制都无须用户关心。Hibernate运行时体系结构:Transient ObjectsApplicationPersistentObjectsSessionJNDIJDBCJTASessionFactoryDatabase图3.2 hibernate体系结构Hibernate的5个核心的接口、类23:1.SessionFactory接口:它是单个数据库映射关系经过编译后的内存镜像以及生成Session的工厂。2.Session接口:应用程序与持久储存层之间交互操作的一个单线程对象。Session接口对象实例中提供了持久化操作相关的“增、删、查、改(CRUD)方面的操作。所有的持久化操作都是在Session的基础上完成的。通常将每一个Session对象实例和一个数据库事务绑定。3.事务Transaction接口:通过Transaction接口来达到允许应用系统通过一组一致的事务API来控制事务边界,从而可以封装系统底层的事务操作和访问的接口,保持数据的一致性,达到应用系统在不同的运行环境平台和Java容器之间方便的移植。4.Query接口:Query接口能让开发者方便的对数据库表中的数据及与之对应的持久化对象进行查询操作,利用它可以以面向对象的方式来实现对数据库的各种查询操作。5.Configuration:通过Configuration获取目前的配置(如数据源、数据库的URL、连接用户名及密码、数据库方言等)并将这些配置加载到内存中,并预启动Hibernate框架,最终达到创建SessionFactory对象的目的。JavaBeans在Hibernate中存在三种状态:1.临时状态(transient):当一个JavaBean对象在内存中孤立存在,不与数据库中的数据有任何关联关系时,那么这个JavaBeans对象就称为临时对象。2.持久化状态(persistent):当一个JavaBean对象与一个Session相关联时,就变成持久化对象。3.脱管状态(detached):在这个Session被关闭的同时,这个对象也会脱离持久化状态,就变成脱管状态(Detached Object),可以被应用程序的任何层自由使用。Hibernate的运行过程:应用程序配置文件Hibernate,cfg.xmlConfigrationSessionFactory映射文件*.Hbm.xml查询SessionQuery异常正常Transaction回滚提交数据库图3.3 hibernate运行过程3.2.3 Spring框架Spring是从实际开发中抽取出来的开源框架,为企业的开发提供一个轻量级的解决方案。该解决方案包括:基于Ioc(控制反转)的核心机制,以及AOP(面向切面编程)的思想,能与多种持久层技术的整合,是优秀的Web MVC框架等。Spring致力于Java应用各层的解决方案而不是仅仅专注于某一层的方案,它贯穿表现层、业务层、持久层,降低各层组件的耦合度,实现软件各层的解耦。轻量级划分一个应用是否属于轻量级还是重量级,主要看它使用了多少服务,使用的服务越多,容器要为普通java对象做的工作就越多,必然会影响到应用的发布时间或者是运行性能。对于Spring容器,它提供了很多服务,但这些服务默认是关闭的,应用对需要的服务可以现用现拿。而且,Spring是无侵入性的可扩展框架,Spring应用中的对象不依赖Spring具体的类。Ioc(控制反转)所谓的控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。AOP(面向切面编程)AOP(Aspect Orient Programming),即面向方面编程。AOP技术给人们提供了一个崭新的视角分析和设计软件系统。AOP引入了分离关注点形成模块化的机制来解决横切关注点的问题。所谓的关注点指的是一个特定的概念、目标或可实现域。系统正是由一组关注点组成,典型的软件系统由多个系统级关注点和核心级关注点组成。核心关注点指业务处理的主要过程,而系统级关注点是与核心业务无关,一般横切多个核心关注点,为这些核心关注点提供服务,如日志记录,安全检测、事务处理等。AOP和OOP互为补充,从两种不同的角度去认识事物。传统的OOP编程是以对象为核心,系统由一系列相互依赖的对象组成,抽象的封装好这些对象的属性和行为,使得这些对象可以相互协作的完成特定的业务逻辑,从而完成一个完整的应用系统。但随着软件系统的不断扩大,系列化分工越来越细,对跨越多个模块的行为进行建模时,OOP暴露出了一些无法很好解决的问题9。OOP的核心是采用的纵向结构去完成业务逻辑(也可理解为关注点),很多不同模块可能具有相同的关注点(横切关注点),OOP处理起来较为繁琐,模块间的耦合度大,后期维护和扩展比较困难。AOP的核心是允许我们独立的完成一个个关注点,然后以一种松耦合的方式把这些单独的关注点编织成一个完整的系统,形成了一种模块化横切关注点的方式。与OOP相对,AOP采用的是横向结构,这是系统建模中抽象层次的进一步提升,可以得到结构清晰、模块化强、代码问耦合度低、易于重用和维护的系统。Spring体系结构如图所示:Spring Framework RuntimeWeb(mvc/Remoting)Data Access/IntegrationServletWebORMJDBCJMSOXMStrutsPortletTransactionsInstrumentationAspectsAOPCore ContainerBeanCoreContextExpression LanguageTest图3.4 spring体系结构Spring框架由7个定义良好的模块(组件)组成,各个模块可以独立存在,也可以联合使用:1.Spring Core:核心容器提供了Spring的基本功能。核心容器的核心功能是用Ioc容器来管理类的依赖关系Spring采用的模式是调用者不理会被调用者的实例的创建,由Spring容器负责被调用者实例的创建和维护,需要时注入给调用者。这是目前最优秀的解耦模式10。2.Spring AOP:Spring的AOP模块提供了面向切面编程的支持。SpringAOP采用的是纯Java实现。Spring AOP采用基于代理的AOP实现方案,AOP代理由Ioc容器负责生成、管理,依赖关系也一并由Ioc容器管理,尽管如此,Spring Ioc容器并不依赖于AOP,这样我们可以自由选择是否使用AOP。3.Spring ORM:提供了与多个第三方持久层框架的良好整合。4.Spring DAO: Spring进一步简化DAO开发步骤,能以一致的方式使用数据库访问技术,用统一的方式调用事务管理,避免具体的实现侵入业务逻辑层的代码中。5.Spring Context:它是一个配置文件,为Spring提供上下文信息,提供了框架式的对象访问方法。Context为Spring提供了一些服务支持,如对国际化等功能。6.Spring Web:提供了基础的针对Web开发的集成特性,例如多方文件上传,利用Servlet listeners进行IoC容器初始化和针对Web的applicationContext.7.Spring MVC:提供了Web应用的MVC实现。Spring的MVC框架并不是仅仅提供一种传统的实现,它提供了一种清晰的分离模型,在领域模型代码和web form之间。并且,还可以借助Spring框架的其他特性。Spring在web.xml中的配置: org.springframework.web.context.ContextLoaderListener contextConfigLocation classpath:applicationContext.xml 3.2.4 Spring整合HibernateSpring以其开放性,能与大部分ORM框架良好的整合这样Spring就能轻松地使用ORM。Spring提供了DAO支持,DAO组件是应用的持久层访问的重要组件,我们把主要精力集中在数据的管理口上。通过Hibernate进行数据持久层操作时,Hibernate的Session接口提供了基本的数据访问方法,获得Hibernate Session对象方法是要实现Hibernate的SessionFactory接口,SessionFactory接口极为重要,它是单个数据库映射关系编译后的内存镜像,负责打开、关闭和管理Session11。Hibernate访问时,需要手动创建SessionFactory实例,这是繁琐的工作,我们希望能以声明式的方式管理SessionFactory实例。Spring的loc容器提供了这种方式,通过配置文件的配置管理SessionFactory实例,使用Spring管理Session对象,使用Spring实现声明式的事务管理。下面是Spring对Hibernate的整合时的关键步骤:在Spring的配置文件ApplicationContext.xml中配置Hibernate对SessionFactory的设置。当Spring的IoC容器配置了SessionFactory Bean,它随应用的部署启动而加载,可以利用Spring依赖注入特性将该Bean注入其它Bean。我们由配置文件还可以看出,以声明式的方式管理SessionFactory时,可以让应用在不同数据源间切换,一旦持久层服

温馨提示

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

评论

0/150

提交评论