武汉大学工程硕士专业学位论文模板

上传人:痛*** 文档编号:100924944 上传时间:2022-06-03 格式:DOC 页数:56 大小:419.50KB
返回 下载 相关 举报
武汉大学工程硕士专业学位论文模板_第1页
第1页 / 共56页
武汉大学工程硕士专业学位论文模板_第2页
第2页 / 共56页
武汉大学工程硕士专业学位论文模板_第3页
第3页 / 共56页
点击查看更多>>
资源描述
word分类号TP311密 级U D C 编 号 1 0 4 8 6 武汉大学工程硕士专业学位论文基于Struts+Spring+Hibernate框架的信息交流平台的研究:X 三指导教师某某、职称:李 四 副 教 授:软 件 工 程:软 件 工 程二六年五月The Research of information munication platform systemBased on Struts+Spring+Hibernate frameworksByZhang SanMay, 2006X 重 声 明本人的学位论文是在导师指导下独立撰写并完成的,学位论文没有剽窃,抄袭,造假等违反学术道德,学术规X和侵权行为,本人愿意承当由此而产生的法律后果和法律责任,特此慎重声明。学位论文 学生的亲笔2006年 5 月 12 日49 / 56摘 要随着网络技术的迅速开展和J2EE平台的广泛应用,基于B/S的多层WEB体系结构正在不断的完善。WEB技术的开展推动了信息化的开展,使人们能够不再受地理空间的限制与其他人进展信息的交流与共享。而开发这样一个信息交流平台,正是本论文要着手处理的问题。其实,就算用Java建造一个不是很烦琐的web应用程序,也不是件轻松的事情。当为一个应用程序建造一个构架时有许多事情需要考虑。从高层来说,开发者需要考虑:怎样建立用户接口user interfaces? 在哪里处理业务逻辑?和怎样持久化应用数据。这三层每一层都有它们各自的问题需要回答。各个层次应该使用什么技术?怎样才能把应用程序设计得松耦合和能灵活改变? 构架允许层的替换不会影响到其它层吗?应用程序怎样处理容器级的服务container level services,比如事务处理transactions?本论文正是基于上述问题出发,以开发一个信息交流平台系统为背景,对基于MVC模式的Struts框架、Hibernate的ORM机制和对持久对象持久化的管理以与Spring IoC控制反转技术进展了探讨。并整合这三种框架:表现层使用Struts;业务层使用Spring;持久层使用Hibernate进展系统的开发。最后结合具体的事例对系统的实现作了详细的说明,验证了实现方法的可行性。关键词:J2EE Struts Hibernate Spring 模式 框架AbstractWith therapid development of network technology and the wide use of J2EEplatform, the multilayer web structure base on B/S has developed gradually.WEB techniques development has promoted the development of informationization, it has made people can municate and share information without area and space limitation. However, developing such kind of information munication platform is just the case in this thesis.Building non-trivial web applications with Java is no trivial task. There are many things to consider when structuring architecture to house an application. From a high-level, developers are faced with decisions about how they are going to construct user interfaces, where the business logic will reside, and how to persist application data. Each of these three layers has their own questions to be answered. What technologies should be implemented across each layer? How can the application be designed so that it is loosely coupled and flexible to change? Does the architecture allow layers to be replaced without affecting other layers? How will the application handle container level services such as transactions? This thesis is just base on these questions, taking an information munication platform system development as background, based on MVC architecture, discussed Struts frame, Hibernators ORM mechanism, persistent management of persistent object and Spring IoC technique and bining frameworks using three popular open source frameworks: For the presentation layer we will use Struts; for our business layer we will use Spring; and for our persistence layer we will use Hibernate to developing this system. At the end of the thesis, illustrate the way of realizing the system by an instance, and validate its feasibility.Key words:J2EE Struts Hibernate Spring Pattern Framework 目 录摘 要Abstract 第一章引言1研究目的和意义1研究内容2论文的章节安排2第二章 Struts框架分析3模式介绍32.2 JSP Model 142.3 JSP Model 242.4 Struts概述52.5 Struts核心组件62.6 Struts 的工作流程7第三章 Hibernate技术介绍93.1 Hibernate概述93.2 ORM介绍93.3 Hibernate的核心接口103.4 Hibernate的检索方式12第四章 Spring技术介绍144.1 Spring框架概述144.2 Spring IoCInversion of control164.3 Spring AOP17第五章ICPS系统的设计205.1 系统简介205.2 系统需求分析205.3 框架设计215.4 数据库设计245.5 模块设计28第六章ICPS系统的实现306.1 域模块层的实现306.2 持久层的实现306.2.1 O/R映射316.2.2 DAO数据访问接口326.2.3 DAO数据访问实现336.3 业务层的实现346.3.1 业务逻辑处理类的实现356.3.2 Spring框架的配置376.4 表示层的实现396.4.1 View层的实现406.4.2 Model层的实现426.4.3 Controller层的实现436.5 小结46第七章总结与展望477.1 本文的总结与展望47参考文献48致谢50第一章 引言从来没有任何事物的开展像互联网那样,对人类的活动产生如此深刻的影响。人们越来越依赖于Internet进展信息的交流与共享。随着网络的飞速开展,信息交流平台在网络上扮演角色越来越重要了。信息交流平台从她诞生的那一刻起就带有十清楚确的个性化的人文色彩,作为一种远程电子通讯手段,信息交流平台允许一定X围内的用户以十分廉价的方式,方便快捷地进展信息和文件资源的共享,以信件和电子讨论的形式进展交流。毫不夸X的说,信息交流平台是网民互动沟通的最优纽带,是互联网的灵魂。信息交流平台已成为主流网民不可缺少的一项根本生活内容。它在新兴的电子文化、信息咨询和商业服务领域也势必蕴藏巨大的市场。比如信息交流平台提供的信息布告区可为企业发布它的产品介绍、推广、宣传、服务等信息,能把企业的新产品快速的推向市场。所以对信息交流平台的研究是完全有必要的。J2EE 是 Sun ONE 的重量级产品,作为一种企业级 Web 应用程序开发技术,J2EE 是目前唯一在市场上得到了广泛应用的技术体系。J2EE 以 Java 为核心技术,更接近或者满足于互联网在智能化 Web 服务上对分布性、开放性和平台无关性的要求,同时它在安全性、健壮性、组件化等方面也更为成熟稳定,获得了众多IT 厂商如 IBM、Oracle、BEA 等共同制定标准并提供技术支持,因此具有强大的功能,是电子商务、远程教育等开发的首选平台。但是,即使我们用先进的J2EE来开发Web应用,也面临着许多问题需要考虑:怎样建立用户接口user interfaces?在哪里处理业务逻辑和怎样持久化应用数据?Struts、Spring、Hibernate这三个基于WEB应用开发的开源框架,可以为我们解决这些问题。如何把一个WEB应用分层而整合Struts、Spring、Hibernate技术,尽可能的将页面显示、业务逻辑和数据处理相别离,最大限度地降低系统各模块之间的耦合性,从而增强系统的可扩展性与可维护性,提高代码重用率,使系统的层次结构更加清晰,易于开发人员的分工协作,充分发挥开发人员的各自特长,这是一个值得研究探讨的问题。Struts是基于MVC模式的框架技术。采用Struts可以简化遵循MVC设计模式的Web应用的开发工作,很好的实现代码重用,使开发人员从繁琐的工作中解脱出来,快速开发具有强可扩展性的Web应用,大大简化开发过程,缩短开发周期,提高开发效率。Hibernate 是一项新兴的 ORM 技术,它把普通 java 对象映射到关系数据库表,并提供对对象的持久化操作。使得Java开发者能够高效地对关系数据库表进展增、删、改、查操作而不用直接面对JDBC、SQL语句,让开发人员把精力集中在如何解决实际业务处理问题上。而借助于Spring IoC和AOP,使得应用中对象的关系更加清晰、一致,而且还使得一切对象可控。最重要的一点是,对象本身的生命周期与对象之间的关系不用再让开发者费神了。基于上述分析,研究实现Struts、Spring、Hibernate三个框架的整合来解决Web应用开发中所面临的上述问题,从而提高程序的开发效率,增强系统的可扩展性与可维护性,提高代码重用率将会是一个很有意义的课题。1.2 研究内容 以实现一个信息交流平台为出发点,设计了一个整合Struts、Hibernate、Spring技术的架构,把整个应用系统分为四层:表示层,业务层,持久层, 域模块层。并分别用Struts、Hibernate、Spring实现了表示层,业务层,持久层,最终完成了本系统。1.3 论文的章节安排 第一章引言局部对本文所要研究课题的研究目的与意义作了简要的阐述,说明了课题的研究内容。 第二章介绍了MVC设计模式与基于MVC模式的Struts框架。对Struts架构的根本工作原理、核心组件的运行机制以与其工作流程进展了阐述。 第三章介绍Hibernate技术。主要阐述了ORM映射机制、Hibernate核心编程接口、Hibernate的检索方式。 第四章介绍Spring框架。主要阐述了Spring框架的七个功能模块以与Spring IoC、Spring AOP。 第五章基于信息交流平台,在对其进展需求分析的根底上进展了数据库设计和模块设计,并设计了一个整合Struts、Hibernate、Spring技术的架构,对应用系统分层。 第六章利用第五章所设计的WEB应用开发架构,实现了一个信息交流平台系统。并验证了所设计实现方法的正确性。 第七章总结与下一步展望。第二章 Struts框架分析作为对经典的MVCModel-View-Controller,模型-视图-控制器设计模式的一种具体实现,Struts是建立在当前Web开发领域中JSP、Servlet、XML等相关开发技术之上的一种主流的开发架构,是一种基于MVC的经典MVC设计模式框架。本章主要介绍了MVC设计模式、Struts架构的根本工作原理、核心组件以与Struts的工作流程。2.1 MVC模式介绍MVC模式,即模型-视图-控制器模式,其核心思想是将整个程序代码分成相对独立的而又能协同工作的3个组成局部1, 2。 模型Model:业务逻辑层。实现具体的业务逻辑、状态管理的功能。 视图View:表示层。即与用户实现交互的界面,是应用程序的外在表现,通常实现数据的输入和输出功能。 控制器Controller:控制层。起到控制整个业务流程Flow Control的作用,实现View和Model局部的协同工作。上述三个组成局部之间的关系如图2-1所示。图2-1 MVC模式的结构在MVC设计模式中,事件一般是指客户端Web浏览器提交的各种不同的请求,这些请求由控制器进展处理,控制器根据事件的类型来改变模型或各个视图,视图也可以承受模型发出的数据更新的通知,根据数据更新的结果调整视图效果,展示给用户。而模型也可以通过视图所获得的用户提交的数据进展具体业务逻辑的处理。2.2 JSP Model 1 在JSP技术的开展初期,由于其便于快速开发的优点,很快就成为创建Web应用的热门技术之一。在JSP页面中可以很容易的同时实现内容的显示、业务逻辑的编写以与流程的控制,从而快速地完成应用开发。最初很多的Java Web应用甚至全部由JSP页面构成,这种以JSP为中心的开发模型被称为Model 1。其具体的实现方式如图2-2所示。图2-2 JSP Model 1在JSP Model 1中,JSP页面负责接收处理客户端Web浏览器发送的请求,并在处理后直接进展响应。正是由于JSP页面本身同时充当了View和Controller两种角色,控制逻辑和表示层逻辑混杂在一起,导致代码的可重用性和可扩展性下降。2.3 JSP Model 2Model 2如此是MVC设计模式的一种具体实现方式,如图2-3所示。在Model 2中采用Servlet作为控制器Controller,负责接收客户端Web浏览器发送来的所有请求,并根据处理的不同结果,转发到对应的JSP页面View实现在浏览器客户端的显示。在Servlet中只包含了控制逻辑和一些简单的处理逻辑,更加复杂的业务处理逻辑如此借助特定的JavaBean具体实现。由于引入了MVC设计模式,Model 2实际上是实现了基于组件的开发,在整个软件开发过程中实现了具体清晰的逻辑划分,能够有效的区分不同的角色,这就更适合于大规模系统的开发和管理。图2-3 JSP Model 2Model 2实现了系统业务逻辑功能模块、显示模块和数据持久层处理模块的别离,同时还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性。2.4 Struts概述作为基于MVC设计模式的Web应用的一种典型表现,Struts架构实际上是建立在Model 2根底之上的,对Model、View和Controller都提供了现成组件,其实现方式如图2-4所示。图2-4 Struts MVC架构 从Model角度看,在Struts中,系统模型的状态主要由ActionForm Bean和值对象表现。从View角度看,Struts提供了java类org.apache.struts.action.ActionForm ,Java开发者继承该类来创建表单bean。另一方面,Struts提供了丰富的JSP标记库,View局部使用这些标记库可以实现与Model的有效交互并能增强显示。 从Controller角度看,在Struts体系机构中, Controller主要是ActionServlet,但是对于业务逻辑的操作如此主要由Action、ActionMapping、ActionForward这几个组件协调完成也许这几个组件,应该划分到模型中的业务逻辑一块。其中,Action扮演了真正的控制逻辑的实现者,而ActionMapping和ActionForward如此指定了不同业务逻辑或流程的运行方向。2.5 Struts核心组件对于Struts 如何控制、处理客户请求,让我们通过对struts的四个核心组件介绍来具体说明。这几个组件就是:ActionServlet,Action Classes,Action Mapping包括ActionForward,ActionFrom Bean。u Struts ActionServletActionServlet继承自类,其在Struts 框架中扮演的角色是中心控制器。它提供一个中心位置来处理全部的终端请求。控制器ActionServlet主要负责将HTTP的客户请求信息组装后,根据配置文件的指定描述,转发到适当的处理器。按照Servelt的标准,所有的Servlet必须在web配置文件中声明。同样,ActoinServlet必须在Web Application配置文件中描述。u Struts Action Classes所有的Action类都继承自org.apache.struts.action.Action,它是Struts架构中控制器组件的重要组成局部。Action 类主要负责将客户请求映射到处理这些请求的业务逻辑Bean,再转向生成响应回送给客户端的页面,实际上充当的是Controller和Model之间的一个适配器Adaptor,其功能就是将请求与业务逻辑分开。这样的别离,使得客户请求和Action类之间可以有多个点对点的映射。而且Action类通常还提供了其它的辅助功能,比如:认证authorization、日志logging和数据验证validation。u Struts Action MappingActionServlet负责转发客户端请求给相应的Action对象进展处理,同时还转发了其他一些相关信息,这种请求和处理之间具体的映射关系保存在XML配置文件默认是struts-config.xml中。在系统启动初始化的时候,会对这些配置信息进展处理,系统针对每个元素都创建一个与之对应的类的实例,以供struts应用程序运行期间使用。当ActionServlet转发请求时,ActionMapping实例被作为参数之一传给相应的Action对象的execute方法。u ActionForwardAction类的execute方法,返回值即为ActionForward类型。ActionForward对象是一种配置对象,代表了Web资源,可以是JSP页面、Servlet以与Action。ActionForward对象映射的是配置文件默认是struts-config.xml中的元素,封装了目标响应页面的URI。u Struts ActionForm Bean在Struts架构中,使用一种名为ActionForm的系统状态Bean,来实现应用系统的非持久性数据储存和维护功能。具体来说,ActionForm Bean对象主要用于保存用户请求表单中的数据,并可保持其状态的连续性,即在不同的页面间传递这些数据。为了实现自动被填充和调用的机制,该Bean必须是Struts API中定义的抽象类org.apache.struts.action.ActionForm的子类的实例。2.6 Struts 的工作流程Struts架构从接收请求到返回响应的工作流程如图2-5所示。在应用服务启动的时候,控制器(ActionServlet)进展初始化工作,读取配置文件(默认是Struts-config.xml文件),为不同的Struts模块初始化相应的ModuleConfig对象。比如配置文件中的Action映射定义都保存在ActionConfig集合中。控制器承受Http请求,并从ActionConfig中找到对应于该请求的Action子类,如果没有对应的Action,控制器直接将请求转发给JSP或者静态页面,否如此控制器将请求分发至具体的Action类进展处理。图2-5 Struts请求响应流程在控制器调用具体的Action的Execute方法之前,ActionForm对象将利用Http请求中的参数来填充自己。Struts架构将检查UserActionForm是否存在,如果不存在,就会创建一个该类的实例。Struts将会使用HttpServLetRequest的相应字段来设置UserActionForm的状态。此外,还可以在ActionForm类中调用Validate方法来检查请求参数的合法性,并且可以返回一个包含所有错误信息的ActionErrors对象。如果执行成功,ActionForm自动将这些参数信息以JavaBean(一般称之为Form Bean)的方式保存在ServletContext中,这样它们就可以被其他Action对象或者JSP调用。Action的Execute方法执行完业务逻辑,返回一个ActionForward对象。控制器从这个对象中获取下一个视图的路径和重定向属性,最终将页面显示给用户。第三章 Hibernate技术介绍Hibernate是目前非常流行的ORMObject/Relation Mapping工具,是一个基于Java的开源代码的持久化中间件,它对JDBC进展了轻量级封装。本章主要介绍了ORM机制、Hibernate的核心接口以与Hibernate的检索方式。3.1 Hibernate概述Hibernate是一种适合于Java语言的对象-关系映射(ORM)解决方案。它提供一个易用的框架来实现把一个面向对象的域模型映射到一传统的关系数据库。它不仅负责从Java类到数据库表格(以与来自Java数据类型的SQL数据类型)的映射,而且还提供数据查询和检索能力,并能大大减少花在SQL和JDBC手工数据处理上的开发时间。Hibernate技术本质上是一个提供数据库服务的中间件。它的架构如3-1图所示: 图3-1 Hibernate 架构图此图显示了hibernate的工作原理,它是利用数据库以与其他一些配置文件如hibernate.properties,XML Mapping等来为应用程序提供数据持久服务的。3.2 ORM介绍ORM即对象-关系映射模式指的是在单个组件中负责所有实体域对象的持久化,封装数据访问细节。它提供了实现持久化层的一种模式:采用映射元数据来描述对象-关系映射细节,使得ORM中间件能够在任何一个Java应用的业务逻辑层和数据库层之间充当桥梁。如如下图所示。图3-2 ORM充当业务逻辑层和数据库层之间充当桥梁ORM解决的主要问题就是对象-关系的映射。域模型和关系模型都分别建立在概念模型的根底上。域模型是面向对象的,而关系数据模型是面向关系的,一般情况下,一个持久化类和一个表对应,类的每个实例对应表中的一条记录。描述对象和关系数据库之间映射细节的元数据通常采用XML格式,并且存放在专门的对象-关系映射文件中。映射语言是以Java为中心的,意味着映射是按照持久化类的定义来创建的,而非表的定义。3.3 Hibernate的核心接口应用程序可以直接通过Hibernate API访问数据库。有5个核心接口几乎在所有的Hibernate应用中都会用到。使用这些接口可以储存和取出持久对象或对事务进展控制。图3-3是这5个核心接口的类框图。图3-3 Hibernate的核心接口的类框图u Session接口 Session会话接口是Hibernate应用使用最广泛的接口。Session也被称为持久化管理器,它提供了和持久化相关的操作:保存、更新、删除、加载和查询对象。Session不是线程安全的,因此在设计软件架构时,应该防止多个线程共享同一个Session实例。会话接口的实例是轻量级的且创建和销毁不需要消耗太多的资源。这意味着在程序中根据需要可以经常创建或销毁Session对象。Hibernate会话是一个介于连接和事务之间的概念。可以简单地认为会话是对于一个单独的工作单元已装载对象的缓存或集合。Hibernate可以检测到这个工作单元中对象的改变。有时也将会话称为持续性管理器,因为它也是与持续性有关的操作例如存储和取出对象的接口。u SessionFactory接口应用从SessionFactory会话工厂里获得会话实例。一个SessionFactory实例对应一个数据存储源。它是线程安全的,这意味着它的同一个实例可以被应用的多个线程共享。会话工厂缓存了生成的SQL语句和Hibernate在运行时使用的映射元数据等。它也保存了在一个工作单元中读入的数据并且可能在以后的工作单元中被重用只有类和集合映射指定了这种二级缓存是想要的时才会如此。所以它是重量级的,这意味着不能随意创建或销毁它的实例。如果应用程序只访问一个数据库,只需要在应用初始化的时候创建一个会话工厂实例。如果应用同时访问多个数据库,如此需要为每个数据库创建一个单独的会话工厂实例。u Configuration接口Configuration配置对象用来配置和引导Hibernate。Hibernate使用一个配置实例来指定映射文件的位置和Hibernate的特定属性,然后创建会话工厂。u Transaction接口Transaction事务接口是一个可选的API。Hibernate应用可以选择不使用这个接口,而是在它们自己的底层代码中管理事务。事务将应用代码从下层的事务实现中抽象出来这可能是一个JDBC事务,一个JTA用户事务或者甚至是一个公共对象请求代理结CORBA允许应用通过一组一致的API控制事务边界。这有助于保持Hibernate应用在不同类型的执行环境或容器中的可移植性。u Query和Criteria接口Query和Criteria接口是Hibernate的查询接口,用于向数据库查询对象,以与控制执行查询的过程。Query实例包装了一个HQLHibernate Query Language查询语句,HQL查询语句类似于SQL查询语句,但HQL查询语句是面向对象的,它引用类名与类的属性名,而不是表名与表的字段名。Criteria接口完全封装了基于字符串形式的查询语句,比Query接口更加面向对象,而且它擅长于执行动态查询。3.4 Hibernate的检索方式从数据库中检索对象是使用Hibernate最有趣也是最复杂的局部。Hibernate提供了以下几种检索对象的方式:导航对象图检索方式。根据已经加载的对象,导航到其他对象。例如通过像aUser.getAddress().getCity()的属性访问器方法访问相关联的对象。如果Session是打开的,当你导航图时,Hibernate会自动装载图的节点。标识符检索方式。当对象的唯一标识符值是的时候,通过标识符检索是最方便最有性能的方法。Session的get和load方法提供了这种功能。HQL检索方式。使用面向对象的HQL查询语言。Session的find方法用于执行HQL查询语句。此外,Hibernate还提供了Query接口,它是Hibernate提供的专门的HQL查询接口,能够执行各种复杂的HQL查询语句。这是Hibernate使用的最为广泛的一种检索方式。QBC检索方式。使用QBCQuery By CriteriaAPI来检索对象。这种API封装了基于字符串形式的查询语句,提供了更加面向对象的接口,它主要由Criteria接口、Criterion接口、和Expression类组成,支持在运行式动态生成查询语句。本地SQL检索方式。使用本地数据库的SQL查询,这种查询Hibernate只关心把JDBC 结果集映射到持久对象图。第四章 Spring技术介绍Spring 是一个以控制反转(Inversion of Control)原如此为根底的轻量级框架。控制反转是一个用于“基于组件的体系结构的设计模式,它将“判断依赖关系的职责移交给容器,而不是由组件本身来判断彼此之间的依赖关系。本章主要阐述了Spring框架的七个功能模块:Spring核心模块、Spring AOP模块、Spring上下文Context模块、Spring Web模块、Spring DAO模块、Spring ORM模块、Spring Web MVC模块以与Spring IoC、Spring Bean的封装机制和Spring AOP。4.1 Spring框架概述Spring框架是一个分层的Java/J2EE应用程序框架,基于Expert One-on-One J2EE设计和发行的代码。Spring框架提供一种简单的开发技术,用于自动化处理工程中大量的属性文件和助理类。Spring 框架由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,图4-1所示。图4-1 Spring架构组成 Spring 框架的每个模块或组件都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下: Spring核心容器模块:核心容器提供 Spring 框架的根本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 IOC 模式将应用程序的配置和依赖性规X与实际的应用程序代码分开。 Spring 上下文Context模块:直接位于Spring核心模块之上。Spring 上下文模块除了继承Spring核心模块的功能外,还添加了用于资源绑定、事件移植、资源装载以与透明地装载上下文等功能。这对于Web应用和J2EE应用尤为有效,甚至可以认为Spring引入上下文模块更多地是为了简化开发Web应用和J2EE应用目的地。 Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 E 组件,就可以将声明性事务管理集成到应用程序中。 Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供给商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量例如打开和关闭连接。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。更重要的一点是它同时能够提供编程方式和声明方式控制事务。 Spring ORM:Spring 框架插入了假如干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。借助于Spring框架提供的简单事务声明,开发者能够很容易实现对O/R Mapping中操作的事务控制。 Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多局部请求以与将请求参数绑定到域对象的工作。 Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。4.2 Spring IoCInversion of control控制反转IoC也称依赖注入Dependence Injection简称DI,它的根本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器 在 Spring 框架中是 IOC 容器负责将这些联系在一起。IoC指的就是由容器控制程序之间的关系,而非传统实现中由程序代码直接操控。这也就是所谓“控制反转的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。IoC的实现模式有三种:Type1 接口注入、Type2 设值注入、Type3 构造子注入。而Type2和Type3型的依赖注入实现是目前主流的IoC实现模式。Spring IoC容器采用Type2和Type3实现了IoC设计模式。为了实现对Spring IoC容器的访问,应用代码可以通过如下两个接口完成。 BeanFactory:位于org.springframework.beans.factory包中。它是工厂设计模式的实现,允许通过名称创建和检索对象,也可以管理对象之间的关系 ApplicationContext:位于org.springframework.context包中。ApplicationContext继承了BeanFactory,所以它覆盖了BeanFactory的所有功能,并提供了更多的特性。下面具体介绍这两个接口。u BeanFactoryBeanFactory主要负责创建并维护Bean实例。当应用创建BeanFactory实例时,实际上是完成了JavaBean的实例化、配置以与管理,即BeanFactory在访问和操作IoC容器的初期充当了IoC容器的作用。其中,BeanFactory依据Spring配置文件定义了各个JavaBean与其关系。可配置的项目有:Bean属性值与依赖关系对其它Bean的引用、Bean的创建模式是否Singleton模式,即是否只针对指定类维持全局唯一的实例、Bean的初始化和销毁方法。因为 org.springframework.beans.factory.BeanFactory 是一个简单接口,所以可以针对各种底层存储方法实现。最常用的 BeanFactory 定义是 XmlBeanFactory,它根据 XML 文件中的定义装入 bean,然后调用BeanFactoryTheAction Bean实例,可通过如下的方式:BeanFactory factory = new XMLBeanFactory(new FileInputSteam(mybean.xml);Action action = (Action) factory.getBean(TheAction);此时我们获得的Action实例,由BeanFactory进展加载,并根据配置文件进展了初始化和属性设定。u ApplicationContext.web.context.ContextLoaderServlet 或者.Listener除了提供了BeanFactory的所有功能,ApplicationContext提供了以下扩展功能:国际化支持我们可以在文件中,对程序中的语言信息如提示信息进展定义,将程序中的提示信息抽取到配置文件中加以定义,为我们进展应用的各语言版本转换提供了极大的灵活性。资源访问支持对文件和URL的访问。事件传播事件传播特性为系统中状态改变时的检测提供了良好支持。多实例加载可以在同一个应用中加载多个Context实例。4.3 Spring AOPAOPAspect-Oriented Programming指面向切面编程,是在J2EE领域比拟热门的话题,它针对业务处理过程中的切面进展提取,所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各局部之间低耦合性的隔离效果。AOP中几个比拟重要的概念:切面Aspect切面,对象操作过程中的截面。通过切面,我们可以将系统中各个不同层次上的问题隔离开来,实现统一集约式处理。各切面只需集中于自己领域内的逻辑实现。这一方面使得开发逻辑更加清晰,专业化分工更加易于进展;另一方面,由于切面的隔离,降低了耦合性,我们就可以在不同的应用中将各个切面组合使用,从而使得代码可重用性大大增强。连接点JoinPoint程序运行过程中的某个阶段点。如某个方法调用,或者某个异常被抛出。处理逻辑Advice在某个连接点所采用的处理逻辑。处理逻辑的调用模式通常有5种:l Before:仅在连接点之前插入预处理过程。l After:在连接点之后插入后处理过程。l Around:在连接点前后插入预处理过程和后处理过程。l Throw:在连接点抛出异常时进展异常处理。l Introduction:是最复杂的Advice.它能够为类新增方法。切入点PointCut一系列连接点的集合,它指明处理方式Advice将在何时被触发。AOP代理AOP Proxy:AOP框架创建的对象,包含Advice。在Spring中,AOP代理可以是JDK动态代理或者是CGLIB代理。Spring中提供的内置AOP支持,是基于动态AOP机制实现。从技术角度来讲,所谓动态AOP,即通过动态Proxy模式,在目标对象的方法调用前后插入相应的处理代码。Spring AOP实现是Spring框架的重要组成局部,它允许开发者使用声明式企业级服务,比如事务服务、安全服务。Spring AOP只实现了方法级的连接点。Spring提供了代表切入点和各种处理逻辑的类,Spring使用术语advisor来代表切面的对象,它包含一个处理逻辑和一个指定连接点的切入点。Spring封装了上述5种处理逻辑类型的接口:l Org.springframework.aop.MethodBeforeAdvice:用于实现Before Advice。Before处理逻辑是一种简单类型的Advice,它不需要一个MethodInvocation对象,因为它只在进入一个方法前被调用。Before处理逻辑可以在连接点执行之前插入自定义的行为,但是不能改变返回值。如果一个Before处理逻辑抛出一个异常,这将中断拦截器链的进一步执行。这个异常将沿着拦截器链后退着向上传播。如果这个异常是unchecked的,或者出现在被调用的方法的签名中,它将会被直接传递给客户代码;否如此,它将被AOP代理包装到一个unchecked的异常里。Before处理逻辑可被用于任何类型的切入点。l Org.springframework.aop.AfterReturningAdvice:用于实现After Advice。After处理逻辑在执行目标操作后执行afterRetruning方法。AfterReturningAdvice可以可以访问返回值不能改变、被调用的方法、方法的参数和目标对象,但不改变执行路径。如果它抛出一个异常,这个异常而不是目标操作的返回值将被沿着拦截器链向上抛出。AfterReturningAdvice可以被用于任何类型的切入点。l :供实现Around Advice使用,它是一个功能强大的Advice类型,能够在执行目标操作前后执行,因此这对于一些需要做资源初始化和释放操作的应用而言,特别有用。实现around Advice的类需要实现接口MethodInterceptor: public interface MethodInterceptor extends Interceptor Object invoke(MethodInvocation invocation)throws Throwable; Invoke方法的MethodInvocation 参数暴露将被调用的方法、目标连接点、AOP代理和传递被调用方法的参数。Invoke方法应该返回调用的结果:连接点的返回值。通过调用MethodInvocation 的proceed来执行对目标操作的调用。MethodInterceptor可以返回不同的值或者抛出一个异常,甚至可以不调用目标操作。l Org.springframework.aop.ThrowsAdvice:用于实现Throws Advice,对处理事务或者特定的业务需求很有帮助。如果连接点抛出异常,ThrowsAdvice在连接点返回后被调用。ThrowsAdvice可以被用于任何类型的切入点。l :用于实现Introduction Advice,它Spring中较为特殊的一种Advice,仅面向Class层而不像上述Advice面向方法层面。通过IntroductionInterceptor可以实现多线程访问中的类锁定。IntroductionInterceptor不能用于任何切入点。第五章 ICPS系统的设计依据在前面的第二至第四章,分别介绍了Struts、Hibernate和Spring框架技术,本章将结合一个具体的信息交流平台系统,设计了一个整合Struts、Hibernate和Spring技术的框架,并详细阐述了系统的设计。5.1 系统简介信息交流平台系统Information munion Platform System,简称ICPS,是一个基于B/S的多层WEB应用系统,主要为上网用户提供了一个信息交流的平台。用户可以根据需要利用ICPS系统发表文章,提出问题并表达自己的观点。同时也可以查阅他人提出的问题和发表的文章,并进展回复、评论等。5.2 系统需求分析需求分析是指,需求分析人员将客户描述的需求用计算机语言描述出来,分析用户的需求是否能实现,是否还可以提交更多的功能。要开发一个软件产品,最首要也是最重要的就是需求分析,它是决定一个系统成功与否的关键。对于开发一个ICPS系统,首先需要确定它能提供那些功能。用户使用ICPS系统是按照一定的流程来进展的:用户登录进入ICPS系统,可以查询其他注册用户信息、查阅文章、发表文章、对某个话题展开讨论以与通过搜索功能查找已有的话题等;管理员要对ICPS系统进展管理 ,系统要具有创建、编辑、删除版块,管理注册的用户,管理文章和设置ICPS系统参数的功能等。由上述分析,本系统有四种类型的用户角色:未注册用户、注册用户、版主、ICPS系统管理员。未注册用户:系统应该为本类用户提供查询注册的用户信息功能、查看文章功能、搜索文章功能。注册用户:系统除了向本类用户提供未注册用户所需的功能外,还应提供发表文章、编辑文章自己发表的、回复文章以与修改个人注册资料功能。注册用户应该能够对自己感兴趣的文章进展订阅和打包。版主:系统除了向本类用户提供注册用户所需的功能外,还应该提供对所管版区文章的删除、编辑、转移文章、置顶文章、指定精华文章、审核注册用户发表的文章、锁定主题与回复。ICPS系统管理员:系统除了向本类用户提供版主所需的功能外,还应该提供版区的创建、修改、删除、用户设置、用户级别与授权设置、对违规用户的IP封锁设置、发表文章设置功能。基于上述分析,本系统需要完成以下具体任务:l 会员注册:提供新会员注册功能,包括提供录入信息的界面,检查注册信息的有效性,并将注册会员信息保存在在对应数据库的表中。l 会员管理:提供给ICPS系统管理员设置权限功能l 文章查阅:对注册会员与未注册会员提供文章查询与阅读的功能,既提供文章标题信息,以与查看详细内容与回复文章内容的超l 发表文章:提供注册会员发表新文章的功能,未注册用户不允许使用此功能。l 编辑文章:提供给发表文章或回复的会员修改更新自己发表的文章内容。版主和ICPS系统管理员可以编辑任何文章的内容。l 删除文章:提供给版主和ICPS系统管理员删除不符合规如此的文章l 转移文章:提供给发表该文章的会员、版主和ICPS系统管理员把文章转移到别的版区。l 置顶文章:文章一般是根据发表与回复的时间倒序排列,这样先发表的文章慢慢就排到后面,版主和ICPS系统管理员如果需要强调某些文章重要,有必要性,就要打乱默认的排列顺序,将这些文章放在列表的最前端,不再按照时间进展排序,但是还要保持其他文章按照时间排序。l 指定精华文章:如果版主和ICPS系统管理员认为某篇文章的内容非常好,可以打上标记,推荐给浏览用户。l 搜索文章:提供给用户搜索自己感兴趣的章的功能l 版块管理:提供给ICPS系统管理员对讨论版区进展管理的功能,包括增加版区、修改版区、删除版区的功能。l 设置参数:提供一些初始化信息的设置功能5.3 框架设计 接下来我们所要做的就是对整个系统进展逻辑分层,已便于系统的开发、维护以与后续新的功能的扩大。软件的逻辑分层指的是在单个的软件模块中完成相对独立的特定的功能。软件的层必须符合以下特征: 每个层由一组相关的类或组件构成,共同完成特定的功能。 层与层之间存在自上而下的依赖关系,即上层组件会访问下层组件的API,而下层组件不应该依赖上层组件。 每个层对上层公开API,但具体的实现细节对外透明。当某一层的实现发生变化,只要它的API不变,不会影响其他层的实现。软件分层的优点,主要表现在以下几个方面: 提高软件的伸缩性。伸缩性指应用程序是否支持更多的用户。 提高了软件的可维护性。可维护性指
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!