在线实时通讯系统设计与实现——53页珍藏版

《基于Web的在线实时通信系统的设计与实现毕业设计》由会员分享,可在线阅读,更多相关《基于Web的在线实时通信系统的设计与实现毕业设计(53页珍藏版)》请在人人文库网上搜索。

1、jiu jiang university毕 业 论 文 题 目 基于web的在线实时通信系统 的设计与实现 英文题目 the design and implementation of the instant messaging system based on web 院 系 信息科学与技术大学 专 业 计算机科学与技术 姓 名 廖江晨 班级学号 a081125 指导班主任 杨振宇 二一二年五月信息科学与技术大学学士学位论文摘 要随着互联网的快速发展,网络聊天工具早已作为一种重要的信息交流工具,受到越来越多的网民的追捧。目前,出现了好多特别不错的聊天工具,其中应用比较广泛的有netmeeting、

2、腾讯qq、msn-messager等。聊天通信系统的诞生拉进了人们的距离,沟通交流愈加便捷了。系统的开发也是深受webqq的启示,开发主要包括一个网络聊天服务器程序和一个网路聊天顾客程序两个方面。前者通过socket套接字构建服务器,服务器能读取、转发客户端发来信息,并能刷新用户列表。后者通过与服务器构建联接,来进行客户端与客户端的信息交流。其中用到了局域网通信机制的原理,通过直接承继thread类来构建多线程。开发中借助了计算机网路编程的基本理论知识,如tcp/ip协议、客户端/服务器端模式(client/server模式)、网络编程的设计方式等。在网络编程中对信息的读取、发送。系统的目标就

3、是能否实现在线实时通信,系统采用myeclipse为基本开发环境,使用ssh框架以及ajax等进行编撰,首先可在短时间内构建系统应用原型,然后,对初始原型系统进行不断修正和改进,直到产生可行系统。系统具有良好的程序结构和人机交互界面,通用性强,既可独立为一个大型聊天网站,也可应用于其它不同需求的网站。 关键词:实时通信,多线程,服务器abstractwith the rapid development of the internet, network chat tools already as a kind of important information communication tool

4、, is more and more the favour of internet users. at present, there are many very nice chatting tools, which is widely netmeeting, tencent of qq, msn-messager and so on. chat communication system of the birth of the drawn into peoples distance, more convenient communication.the development of the sys

5、tem is also being webqq revelation, development mainly includes a network chat server program and a network chat client program two aspects. the former through the socket socket set up the server, which can be read, forward from the client information, and can refresh user list. the latter through t

6、o a server connection, to the client and the client information exchange. among them the use of the local area network communication mechanism of principle, through the directly inherited thread class to establish multithreading. in the development of the computer network programming elementary theo

7、ry knowledge, including tcp/ip protocol, client/server mode (client/server mode), network programming design method, etc. in the network programming to read, send information.the goal of this system is to achieve the real-time online communications, system uses myeclipse as the basic development env

8、ironment and java language to write, first in a short time can establish system application prototype, and then, on the basis of the prototype system modification and improvement continuously, until form feasible system. this system has a good program structure and man-machine interface, versatility

9、, both as a independent small chat site, also can be applied to different needs of other web sites.keywords: real-time communication, multithreading, server目 录摘 要iabstractii1 概 述1.1课题来源(1)1.2 国内外背景(2)1.3 课题目标(2)1.4 论文结构(2)2 技术支持2.1 mvc简介(4)2.2 hibernate简介(5)2.3 struts简介(5)2.4 spring简介(6)2.5 ajax简介(7

10、)3 系统需求剖析3.1 系统概述(9)3.2 系统参与者(10)3.3系统功能剖析(11)3.4 系统用例图(12)4 系统设计4.1 系统设计目标(17)4.2 系统总体构架设计(17)4.3 数据库设计(19)4.4 po层设计(数据持久层)(23)4.5 dao层设计(25)4.6 service层设计(26)4.7 web层设计(28)5 系统实现5.1开发环境布署(30)5.2 po层的实现(31)5.3 service层实现(33)5.4 dao实现(34)5.5 web层实现(36)6系统测试(40)结束语(44)致 谢(45)参考文献(46)471 概 述“但愿人长久,千里共

11、婵娟。”大诗人苏东坡这句脍炙人口的抒发对故人极其思念的千古名句留传至今,引起了多少游子的沉痛共鸣时空距离的存在,阻隔了无数千里之遥的亲戚同学们的情感交流,虽有鸿雁帮忙传送书信,可漫长的等待却成为时间异步的真实缩影。然而随着现今社会计算机科学技术的迅猛发展和网路的出现,信息资源的实时共享成为现实,更重要的是它提供了一种极为直接的即时的交互方法,当然这些交互不单是指数据、信息之间的传递,也包括人与人之间的相互交流,各种聊天软件和在线聊天室正是承载这类交互的媒介,人们之间的交流几乎完全可以不受时空的约束,“但愿人长久,千里共婵娟”在现在可以蝶变成“只需网上游,千里共聊天”了。由于internet/i

12、nternat的广泛使用,客户与服务器端之间能够有效地进行交互成为我们要解决的问题。jsp是一种在服务器端嵌入java代码的脚本语言,是开发web动态网站重要而快速、有效的工具,在保证最大可操作性的前提下,它提供了比通常脚本语言(如asp、php)和cgi更快的执行速率。由此可见,作为一种web实现技术,它的效率是很高的,这一点刚好符合了聊天系统所要求的实时性。jsp自身的安全性,再加上实现模式的特性,完全才能达到聊天系统的即时性和保密性的要求,保证了人们在交流中须要维护的隐私权。此外,作为java平台的一部分,jsp拥有java语言“一次编撰,随处运行”的特征,它的平台无关性使其可以轻松移植

13、到其它平台上运行。种种优点促使jsp技术为目前各式各样的聊天系统的实现都打下了良好的基础1。1.1课题来源“朋友 一生一起走”、“朋友 不曾孤独过”这两句歌曲同学中的歌词相信你们已经耳熟能详了,朋友对于我们每个人来说,那是我们人生中何其重要的组成部分。常言道:在家靠母亲,出门靠朋友。谁又不希望自己能多几个同学,要是同学能五湖四海该多好啊!这在网路技术还欠发达的时侯看来其实是不可能的事,而今,各式各样的网路交友层出不穷,大大降低了你们交友的途径。1.2 国内外背景随着互联网的发展,互联网服务也参杂着我们生活的方方面面。作为互联网免费服务中最早被网民认知并接受的互联网服务之一,即时通讯软件在慷慨的

14、服务于广大网民数年以后,获得的是巨大的网民基础。以用户为基础的即时通讯产业在满足于用户的基本需求的同时,也延展发展开辟出了多平台、多营运模式的即时通信外延市场2。近年来随着web的发展给及时通讯提供了更大的发展空间。1.3 课题目标现在社会,信息技术早已融入到社会生活的各个方面,人们的联系也从书信来往到电话联系,从邮件发送到网路聊天,计算机逐渐成为人们工作生活不可或缺的一部分。这也就使得了即时通信行业的迅速发展,各类的聊天软件也就应运而生。传统的客户端即时通信软件须要下载即时通讯客户端安装以后才会使用,聊天工具的繁杂因而酷爱聊天走到那里聊到那里的人用他人笔记本的时侯,如果没有那个聊天工具就须要不

15、厌其烦的下载。而基于web浏览器的即时通讯服务,不需要下载客户端,打开浏览器联网即可完成即时通信,在web浏览器中获得基础的im服务,具有web产品固有的便利性特性,也保持了用户在客户端软件的一些操作习惯。作为客户端即时通信软件的有力补充,即时通信(im)将为用户提供基于web的im 服务3。该系统的推出便捷了你们的通讯,同时也丰富了你们的 “在线生活”平台。1.4 论文结构论文共分六章,详细介绍了系统的整个实现过程,分别是:概述、技术介绍、需求分析、系统设计、系统实现、系统测试等几大模块。概述:介绍课题。(1)技术介绍:对系统应用到的当下流行的几大实用性技术进行简单的介绍,方便你们理解。(2

16、)需求剖析:简单介绍系统须要实现的功能,并介绍用例关系。(3)系统设计:介绍系统的设计思路与看法。(4)系统实现:详细介绍系统的实现过程,并附送核心代码块。(5)系统测试:系统完成后,不断进行测试修补bug、完善系统。本章主要介绍了课题的来源、开发背景、设计目标以及论文结构,在开发过程中要严格依照所剖析的来执行实现,避免不必要的错误,对读者而言也能在先前对整个课题有个大约的了解,对全文的理解加深印象。2 技术支持web技术日新月异,第二章将对论文中应用到的几大主流技术mvc模式、ssh框架、jsp和数据库做一简单介绍,方便读者更好的了解论文。2.1 mvc简介一个框架就是一个可复用的设计预制构件,

17、它规定了应用的体系结构,阐明了整个设计、协作预制构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方式。简单的说,框架就是软件开发者在实践中总结出的一些开发标准。这些标准可以帮助开发人员以成功的经验模式来开发同类型的系统4。使用框架可以给开发人员带来以下益处:(1)在好的框架下,开发人员只须要编撰一些必须的代码,他们不需要直接接触底层的api;(2)经过良好设计的框架可以为程序提供清晰的结构而且提升程序的内聚性;(3)一个容易使用的框架可以通过一些事例和文档为用户提供最佳实践;(4)成熟框架的代码更精炼,更强壮,比自己的代码容易测试和维护。java platform, e

18、nterprise edition(java ee)本身也提供了一些框架。比如enterprise javabean(ejb)容器。ejb为用户提供了一系列“重量级”企业级服务,给了我们看起来完整的服务策略,但是,它也给开发带来了许多负面疗效。由于ejb提供的企业级服务是强制性的,从而使系统显得很庞大,难以布署,性能也大大增加,给开发和应用带来了好多不便,增加了系统的开支,同时也促使测试显得困难。与传统的基于ejb的java ee框架相对应的,目前java ee业界出现了好多优秀的轻量级框架,它们除了可以实现传统框架所能做到的事情,而且可以通过轻量级的方法去实现5。总体上说,它们具有以下优点:

19、(1)轻量级java ee框架的服务是可配置的,从而为系统省去好多不必要的开支;(2)轻量级java ee框架的良好扩展性可以保证引擎在将来可以不断地被扩充以适应新的需求。2.2 hibernate简介hibernate是一个开放源代码的对象关系映射框架,它对jdbc进行了特别轻量级的对象封装,使得java程序员可以随心所欲的使用对象编程思维来操纵数据库6。 hibernate可以应用在任何使用jdbc的场合,既可以在java的客户端程序使用,也可以在servlet/jsp的web应用中使用,最具革命意义的是,hibernate可以在应用ejb的j2ee构架中代替cmp,完成数据持久化的重担。

20、hibernate的核心插口一共有6个,分别为:session、sessionfactory、transaction、query、criteria和configuration。这6个核心插口在任何开发中还会用到。通过这种插口,不仅可以对持久化对象进行存取,还能够进行事务控制。hibernate 中提供了两级cache,第一级别的缓存是session级别的缓存,它是属于事务范围的缓存。这一级别的缓存由hibernate管理的,一般情况下无需进行干预;第二级别的缓存是sessionfactory级别的缓存,它是属于进程范围或群集范围的缓存。这一级别的缓存可以进行配置和修改,并且可以动态加载和卸载。

21、 hibernate还为查询结果提供了一个查询缓存,它依赖于第二级缓存。hibernate版本更新速率很快,目前为止有两个阶段性的版本:hibernate2,hibernate3和hibernate4,这一点程序员从其jar文件名便可以看下来。目前最新发布的版本是hibernate-core-4.1.1.final。hibernate2系列的最高版本是hibernate2.1.8,hibernate3系列的最高版本是hibernate-distribution-3.6.10.final-dist版,但目前使用较多且较稳定的版本是hibernate 3.1.3或hibernate 3.1.2。另

22、外,自hibernate3发布以来,其产品线更加成熟,相继出现了hibernate注释、hibernate实体管理器、hibernate插件工具等一系列产品套件。在便捷程序员使用hibernate进行应用程序的开发的同时,也渐渐提高了hibernate产品线的实力7。2.3 struts简介struts 是 apache软件基金会(asf)赞助的一个开源项目。由于本系统的开发过程中使用的是struts2,在此就只对struts2做简单的介绍。struts2堪称是一个全新的框架,但这仅仅是相对struts 1而言。struts 2 与struts 1相比,确实有好多革命性的改进,但它并不是新发布

23、的新框架,而是在另一个赫赫有名的框架:webwork基础上发展上去的。从某种程度上来讲,struts2没有承继struts 1的血统,而是承继webwork的血统。 因为struts2是webwork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有挺好的保证:而且吸收了struts 1和webwork二者的优势,因此,是一个特别值得期盼的框架8。apache struts2是一个柔美的,可扩充的java ee web框架。框架设计的目标贯串整个开发周期,从开发到发布,包括维护的整个过程。apache struts 2即是之前你们所熟知的webwork 2。在经历了几年的各自发展后,w

24、ebwork和struts社区决定合二为一,也即是struts 29。2.4 spring简介spring是一个开源框架,它由rod johnson创建。它是为了解决企业应用开发的复杂性而创建的。spring使用基本的javabean来完成原先只可能由ejb完成的事情。然而,spring的用途除了限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何java应用都可以从spring中获益10。(1)目的:解决企业应用开发的复杂性;(2)功能:使用基本的javabean取代ejb,并提供了更多的企业应用功能。(3)范围:任何java应用。 简单来说,spring是一个轻量级的控制反转(i

25、oc)和面向切面(aop)的容器框架11。以下是spring的特征:(1)轻量从大小与开支两方面而言spring都是轻量的。完整的spring框架可以在一个大小只有1mb多的jar文件里发布。并且spring所需的处理开支也是微不足道的。此外,spring是非侵入式的:典型地,spring应用中的对象不依赖于spring的特定类;(2)控制反转spring通过一种也称控制反转(ioc)的技术推动了松耦合。当应用了ioc,一个对象依赖的其它对象会通过被动的形式传递进来,而不是这个对象自己创建或则查找依赖对象。你可以觉得ioc与jndi相反不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请

26、求就主动将依赖传递给它;(3)面向切面spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应当做的完成业务逻辑仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持;(4)容器spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每位bean怎样被创建基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或则每次须要时都生成一个新的实例以及它们是怎么互相关联的。然而,spring不应当被混

27、同于传统的重量级的ejb容器,它们常常是庞大与笨重的,难以使用;(5)框架spring可以将简单的组件配置、组合成为复杂的应用。在spring中,应用对象被声明式地组合,典型地是在一个xml文件里。spring也提供了好多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。所有spring的这种特点使你还能编撰更干净、更可管理、并且更便于测试的代码。它们也为spring中的各类模块提供了基础支持;2.5 ajax简介web应用的交互如flickr,backpack和google在这方面早已有质的飞跃。这个术语源自描述从基于web的应用到基于数据的应用的转换。在基于数据的应用中,

28、用户需求的数据如联系人列表,可以从独立于实际网页的服务端取得而且可以被动态地写入网页中,给平缓的web应用体验着色使之像桌面应用一样。ajax的核心是javascript对象xmlhttprequest。该对象在internet explorer 5中首次引入,它是一种支持异步恳求的技术。简而言之,xmlhttprequest使您可以使用javascript向服务器提出恳求并处理响应,而不阻塞用户。许多重要的技术和ajax开发模式可以从现有的知识中获取。例如,在一个发送恳求到服务端的应用中,必须包含恳求次序、优先级、超时响应、错误处理及反弹,其中许多元素早已在web服务中包含了,就像现今的so

29、a。ajax开发人员拥有一个完整的系统构架知识。同时,随着技术的成熟都会有许多地方须要改进,特别是ui部份的易用性。ajax开发与传统的cs开发有很大的不同。这些不同引入了新的编程问题,最大的问题在于易用性。由于ajax依赖浏览器的javascript和xml,浏览器的兼容性和支持的标准也显得和javascript的运行时性能一样重要了。这些问题中的大部分来源于浏览器、服务器和技术的组合,因此必须理解怎么能够最好的使用这种技术。综合各类变化的技术和强耦合的顾客服务端环境,ajax提出了一种新的开发方法。ajax开发人员必须理解传统的mvc构架,这限制了应用层次之间的边界。同时,开发人员还须要考

30、虑cs环境的外部和使用ajax技术来重定型mvc边界。最重要的是,ajax开发人员必须严禁以页面集合的形式来考虑web应用而须要将其觉得是单个页面。一旦ui设计与服务构架之间的范围被严格分辨开来后,开发人员就须要更新和变化的技术集合了12。本章主要对时下在java ee开发中得到广泛应用的三大主流框架ssh、jsp、oracle、ajax等技术,以及对在web开发中广泛应用的mvc模式做了一定介绍。3 系统需求剖析需求剖析,即是指对要解决的问题进行详尽的剖析,弄清楚问题的要求,包括须要输入哪些数据,要得到哪些结果,最后应输出哪些。在软件工程中,需求分析指的是在构建一个新的或改变一个现存的笔记本系

31、统时描写新系统的目的、范围、定义和功能时所要做的所有的工作。需求剖析是软件工程中的一个关键过程。在这个过程中,系统分析员和软件工程师确定客户的须要。只有在确定了这种须要后她们能够够剖析和寻求新系统的解决方式。需求剖析阶段的任务是确定软件系统功能13。需求剖析是理解真实世界中的问题和用户需求,并找出能满足这种需求的解决方案的过程。需求剖析的目标是在开发活动开始曾经,对问题的解决方式得到更好的认识。由此可见,需求分析在整个项目过程中具有举足轻重的地位。它甚至决定了之后开发活动的大方向。能否得到一个确切全面的需求剖析结果将直接影响软件开发项目的质量和胜败14。以下将结合开发的具体情况,对目标系统的功

32、能性需求、非功能性需求进行剖析。3.1 系统概述这次开发的主要目标是实现一个实时通信系统,此系统的主要功能是在线注册过的用户才能通过此交流平台获得愈发快捷、方便的沟通,本系统的系统结构图如图3-1所示。系统为每位注册用户提供便捷的沟通平台,在该系统内用户可以通过查找添加自己想要的好友,与其进行在线交流,进行简单的文件传输。每个用的登陆以后就会启动一个单独的线程,作为该用户整个系统的贯串,无论是登陆、聊天、查询修改等功能中都须要用到,所以客户端与服务器端的联接十分重要。用户注册用户登入即时通讯个人管理好友列表好友查询添加退出系统在线即时通信设置个人信息更改密码更新心情好友列表更新好友状态检查查看

33、好友资料消息发送消息接收图3-1 系统功能结构图3.2 系统参与者依据需求剖析的结果,通过最终的用例模型,可以确定系统的主要功能和开发目标。另外,系统还应当具备使用友好、安全等用例文档难以描述的非功能性需求具体功能性需求和非功能性需求15。由于我们使用用例来记录系统的功能性需求,所以在需求分析的第一步我们须要明晰系统的参与者。参与者(actor)是具有行为能力的事物,可以是一个人(由所饰演的角色来辨识)、计算机系统或组织。经剖析确认,系统的参与者主要是注册用户。用户注册成功以后,可以进行一齐功能的一系列操作,如对好友进行查询添加、与好友进行聊天、查看聊天记录等。3.3系统功能剖析3.3.1 功

34、能需求系统的主要功能是为广大用户提供一个便捷快捷的聊天沟通平台, 以下会主要介绍各个模块。系统各项需求功能大致如下:(1)第一次使用系统的用户通过填写个人信息来进行注册,并验证用户名的有效性(是否已被注册);(2)使用早已注册的用户可以验证登陆信息(一般指用户名和密码)后登入系统;(3)可以更改密码;(4)能够选择对象进行聊天;(5)可以查找好友;(6)进行好友添加;(7)能够进行文件传输;(8)可以查看好友资料;(9)可以查看聊天记录;(10)可以更新个人资料。3.3.2 性能需求(1)时间特点需求;实时通信系统的查询响应取决于服务器和web browser之间的联接带宽以及同时联接的客户端

35、数目,系统在设计上应以快速响应管理人员查询恳请为优先保证目标。(2)适应性需求;系统在winxp及以上版本上均可运行,硬件需求为硬盘容量起码2g,内存512m,为完成系统所有功能,在系统中必须安装支持数据库的软件,如:oracle,myeclipse8.5等,操作方法需按正常规范操作方法进行,本系统以便更改,在开发计划发生变动时也可便捷的进行相应的更改,以适应更高的要求,总而言之本系统具有挺好的适应能力。(3)安全性需求。由于在线即时聊天系统信息量会特别大,所有在对用户步入系统时要保证速率。在交流过程中又要保证通讯的实时性。对于整个系统,需要完整的权限控制,防止个别人恶意的功击系统,修改原始记

36、录。同时对于数据库中的数据须要定时备份,防止系统数据遗失。此外,系统要求用户在登入时须要身分验证。3.4 系统用例图按照需求剖析的结果,通过最终的用例模型,可以确定系统的主要功能和开发目标。由于使用用例来记录系统的功能性需求,所以在需求分析的第一步须要明晰系统的参与者。参与者(actor)是具有行为能力的事物,可以是一个人(由所饰演的角色来辨识)、计算机系统或组织。经剖析确认,系统的参与者主要是用户。用户首先进行注册,然后登陆系统进行一系列的操作。用例图是对系统语境的绘制,显示了系统的边界,以及怎样使用系统。系统用户的用例图如图3-1所示。该图详尽的描述了系统用的整个用例,包括个人管理、聊天、

37、好友三个模块,而每位模块中又包含了子模块。如个人模块中,包含了查看个人资料、更新个人资料、修改密码、上传下载等;聊天模块中又包含了查看聊天对方个人信息、发送接收信息、传送和接收文件、查看聊天记录等;在好友模块中,包含了查找和添加好友。每个模块实现的功能都是不一样的,以对象实现来界定模块有利于设计与管理,功能界定也很清晰,不至于混淆。用例的设计合理不但能使开发人员更好的把握脉络,也有利于用户拥有更好的体验。图3-2 用户用例图从图3-1可以看出参与者用户主要有聊天、个人管理和查找好友等模块。几个用例实现的功能大致相仿,接下来对其中的几个简单用例进行剖析。用例:添加好友;用例图如图3-3所示。图3

图片[1]-在线实时通讯系统设计与实现——53页珍藏版-老王博客

38、-3添加好友用例用例规约如表3-1所示。表3-1 添加好友用例规约用例名称:添加好友用例id:test_01角色:用户用例说明:该用例的主要功能是添加好友,点击添加好友触发后置条件成功登录基本事件流:参与者动作系统响应1、进入主界面,用户点击“查询好友”按钮3、用户添加联系人,点击“添加”2、系统响应风波,进入查找界面4、判断是否合法,若合法,则添加成功;若不合法,则步入4.1.其它风波流:无异常风波流:参与者动作系统响应4.1.1若好友早已添加4.1.3若不存在该用户4.1.2系统提示好友已存在4.1.4系统提示没有该用户用例:更新资料用例;用例图如图3-4所示。图3-4 用户更新资料用例用

39、例规约如表3-2所示,该规约详尽的介绍了用户更新资料用例的条件、执行过程以及出现的问题解决方法。当用户登录成功步入主界面时,点击个人资料,然后对个人资料进行更改,系统会对输入的内容进行判定,是否该内容符合更改需求,弱不符合则进行相应返回,若符合要求,则进行成功跳转,并将其显示。表3-2 用户更改资料用例规约用例名称:修改资料用户id:test_02角色:用户用例说明:该用例主要实现的功能是用户实现对自己资料的更改操作后置条件:用户成功登陆主页基本事件流:参与者动作系统响应1、点击个人资料3、用户对个人的姓名、性别、年龄等信息进行更改,点击“修改”2、系统相应风波,跳转至“修改信息”页面4、系统

40、对用户的输入进行判定,若合法,则返回。其它风波流:无异常风波流:无前置条件:信息更改成功,返回用户活动图如图3-5,其他不再累述,用户活动图才能详尽的叙述出用户的整个活动流程,方便读者全方面理解。由此,该系统的功能需求已清晰地呈现下来,然而系统的功能需求也是异常重要的一个方面。软件产品的非功能性需求是指产品为了满足用户业务需求而必须具备能性需求以外属性或品质如可靠性性能响应时间容错性扩展性等等。这些需求将在系统实现初步功能后逐渐进行构建。图3-5用户活动图4 系统设计一个良好的系统设计是系统完成的保证,本章将从po层、dao层、service层以及web层对系统进行设计剖析。4.1 系统设计目

41、标通过需求剖析,已经得到了功能性需求和非功能性需求的列表和详尽说明。在系统设计阶段,将在需求分析的基础上对系统的技术、逻辑、功能、数据、安全等方面作出概要设计。主要工作有依据实际情况界定系统构架层次,从用例中具象出用于指导开发的业务领域模型,定义层与层之间、模型与模型之间的服务插口约束,解决系统数据持久化与数据交互问题,并为系统性能、安全、部署等问题提出可行的解决方案。该阶段的目标是得到一个可用的、健壮的、能满足开发须要的系统框架,为下一步的详尽设计提供技术基础。4.2 系统总体构架设计该系统采用java ee三层结构,分为表现层、业务逻辑层和数据服务层。三层体系将业务规则、数据访问等工作放在

42、中间层处理,客户端不直接与数据库交互,而是通过控制器与中间层构建联接,再由中间层与数据库交互。表现层在设计过程中使用jsp页面结构充当,负责搜集用户的恳求数据,如中学生用户的注册恳求、操作恳求等,并将其递交到指定的控制器,页面中完全严禁java脚本,主要是用struts的标签库进行描述。中间层采用spring+hibernate,为了分离控制层与业务逻辑层,又可细分为: web层,就是mvc模式里的“c”(controller),负责表现层与业务逻辑层的交互,调用业务逻辑层,并将业务数据返回给表现层显示。mvc框架采用流行的struts。service层(业务逻辑层),负责实现业务逻辑,对dao

43、对象进行正面模式的封装。dao层(数据访问层),负责与持久化对象交互,封装了数据的增、删、查、改(crud)原子操作。p0层(持久化对象层),通过实体一关系映射工具将关系型数据库的数据映射成对象,实现以面向对象方法操作数据库,本系统采用hibernate作为0/rm框架,自定义数据库缓冲池作为不成。中间层是整个系统的关键所在,而spring的作用贯串了整个中间层,将web层、service层、dao、po无缝整合,其实现模式如图4-1所示。用户界面采集/显示数据(jsp)web表示层(struts2/servlet)service层(业务逻辑层)dao层(数据访问层)数据库(oracle)sp

44、ring注入图4-1系统总体构架图4.3 数据库设计数据库的设计至关重要,系统功能的强悍与否最初的数据库设计起着关键性意义。用户:注册的用户,用以进行聊天的账号;好友:好友皆为已注册的用户,用户登入系统后即可按条件进行查找添加;信息:用户用以交互,沟通。4.3.1 实体联系图图4-2用户实体图useridaccountnamepasswordagesexiconcityintroduceregisttimelastloginiplastlogintimee图4-3好友实体图friendiduseridfriendid用户实体图如图4-2所示;好友实体图如图4-3所示;信息实体图如图4-4所示。

45、上述三图分别勾勒了该实体的属性。系统的e-r图如图4-5所示,清晰的叙述了三个实体类之间的关系。图4-4信息实体图messagesendidreceiveidcontentreadedidsenddatee图4-5 e-r图userfriendmessageiduseridfriendidsendidreceiveidcontentsenddatereadedididaccountnameagesexiconcityregisttimelastloginiplastlogintimepasswordintroduce属于接/收n1nn4.3.2数据库基本表设计数据库表的设计很大程度上决定了你的

46、系统的开发效率,所以一个好的数据库设计是十分有必要的。表4-1 用户信息表数据库表属性类型描述oics_userid(主键)varchar2标示每一个用户accountvarchar2用户爱称(登录的帐户号)passwordvarchar2登陆密码namevarchar2真是姓名sexvarchar2性别registertimedate注册时间lastlogintimedate先前登录时间lastloginipvarchar2先前登陆ipcityvarchar2所在地agenumber年龄introducevarchar2个人详尽介绍iconvarchar2头像如表4-1所示,该表为用户表,各

47、字段为用户的属性。表4-2 好友信息表数据库表属性类型描述oics_friendid(主键)varchar2标示每一个好友组useridvarchar2用户idfriendidvarchar2该用户所对应的好友如表4-2所示,该表为系统用户好友表,userid为登陆用户所对应的id,friendid为登陆用户所添加好友的id(为其他用户)。表4-3 聊天记录表数据库表属性类型描述oics_messageid(主键)varcahr2标示每一条聊天信息sendidvarchar2标示发送信息的对象receiveidvarchar2标示接收信息的对象contentvarchar2记录传输信息的内容s

48、enddatedate发送的时间readedvarchar2标记是否已读如表4-3所示,该表为聊天信息表,即聊天记录的存储表,sendid为用户发送方的id,receiveid为聊天时接收端用户id值,content为发送信息内容,senddate为发送的时间。4.4 po层设计(数据持久层)模型层可以说是运行时系统的工作核心,基本上所有的业务逻辑处理和数据操作都在该层实现。在信息系统中,该层通常会被分成业务服务层(service)和数据访问层(dao)。服务层职责是对模块的“原子用例”进行实现,持久层用于配合服务层的数据储存操作。在这两个细分的层次中的所处理的javabean名称也不一样,在

49、service中,处理的是bussiness object,在dao中,处理的javabean称为persistent object(po)。虽然她们代表的意义和职能不一样,但表现形式却有可能相同。基于职责的考虑,除非无法本地实现的需求,一般不推荐把业务逻辑放在数据库的储存过程中,因为数据库上操作是由dba维护的,web系统未能把控制权延展到数据库上。而且这样破坏了系统的完整性,同时也不利于移植和维护。由前面的数据表结构,可以轻松地得到系统的域模型层对象,即把数据库中涉及到的所有表转化为持久化类即完成了持久化对象,系统的持久化对象用hibernate po完成,故在完成类的持久化过程中还必须提

50、供对应的映射文件。以信息实体举例:(friend.hbm.xml)。持久化对象message实体对象message映射文件(message.hbm.xml)域模型层的结构如图4-6所示。 图4-6 实体对象的映射对应关系hibernate配置文件主要代码如下:然后对message类的属性方式进行详尽解释:图4-7 聊天信息的类图如图4-7中彰显了好友类的属性及相关技巧,其具体描述如:属性:(1)id /主键,自动生成(2)sendid/发送信息用户id(3)receiveid /接收方id (4)content/聊天信息内容(5)senddate()/信息发送时间(6)readed/信息读取状

51、态(是否已读)方法:(1)getid()/信息表id的get方式(2)getsendid()/发送用户方id的get方式(3)getreceiveid()/接收信息用户id的get方式(4)isreaded()/获取信息读取状态get方式(5)getcontent()/获取聊天信息的get方式(6)getsenddate()/信息发送时间的get方式(7)setid()/设置信息表id(8)setsendid()/设置发送方id(9)setreceived()/设置接收方id(10)setreaded()/设置信息读取状态(11)setcontent()/设置聊天信息内容(12)setsend

52、date()/设置发送信息时间4.5 dao层设计dao层的主要功能就是实现对持久化对象的访问,业务逻辑层调用dao层的方式与数据库进行交互,实现业务逻辑功能。为了降低系统的可复用性,同时降低了系统的各层间的耦合性,在dao层又细分为两层:一层为数据访问插口层,该层为每位持久化对象申明一个dao插口,并进行常用的持久化对象的方式的申明;二层为数据访问实现层,该层主要实现对持久化对象的访问,该层通过实现数据访问插口层的插口。同时在两层都分别定义了一个插口imessageservice和类messageservice实现对数据库的通用操作操作,其他的dao对象和dao实现对象分别承继这两个类。由以

53、上的描述,可以得出在dao层的结构图4-7所示(以message实体类为例)。从图4-8可以看出dao层的设计原则是分为插口层和实现层,其中插口层和实现层的实现相视,首先构建一个基础类(如图4-8中的messageservice和simplehibernatedao)完成相对应的数据操作,而其他dao层的类只需实现该基础类,便可以进行对应的数据操作。如果在开发过程中发觉有些方式基础类中没有实现,则只需在承继基础类的前提下添加上自己须要的方式即可,如此大大提升了编码效率。dao层的类图如图4-7所示,其设计方案如图4-8所示,遵循如上所述的实现原理,所有的dao类皆实现了基础类。图4-8 dao

54、层之间的关系 如图4-8中所勾画的,所有的dao类都承继了simplehibernatedao以及实现了ibasedao基础dao类,使得其扩展性更好,方便之后换框架。4.6 service层设计业务逻辑层的主要目的即完成对系统功能的具体实现,在该层通过调用dao层(通过插口调用),完成对数据的操作,同时实现系统中须要实现的各项功能。该层的设计原则同dao层相像,首先构建插口层,该层申明在该层须要实现的功能方式;其次就是插口实现层,在该层调用dao层的相关技巧同时实现业务插口层对应的插口完成业务功能的实现。系统中业务逻辑组件和dao组件及数据之间的依赖关系如图4-9所示(message为例)。

55、图4-9业务逻辑组件和dao组件及数据之间的依赖关系图在service层中,利用spring的依赖注入与控制反转进行纵向切入,提高效率。4.7 web层设计web是在internet上的一种新的资源组织方式,也是一种新的新的信息服务形式。它是由web浏览器和web服务器两部份组成。web浏览器主要用于在用户机器上处理和显示超文本文件即web页面),web服务器接收web浏览器传送来的web资源和url地址,并将响应的文本或信息提供给客户端的web浏览器。web服务器系统通过超文本链接功能和http合同,将文本、图像、声音和其他internet上的资源紧密地结合上去,只要在web浏览器的地址栏中

56、输入web资源的url地址,既可以web页面的方式显示在web浏览器上,并且组成web的超大型文本文件通过超链接互相联接,只要在链接点上单击一下,就可以从当前页面跳转到某个其他页面,web资源的这些便捷的访问方法大大加速了internet的普及使用。web的基础上,在人们开发出了各种各样的即时通信系统。web层的主要任务有:(1) 显示用户界面;(2) 验证用户的输入;(3) 与服务器进行交互。系统中采用struts 2作为系统中mvc框架。在控制器层都由struts 2的action充当,这些action通过调用系统业务逻辑层的业务逻辑方式来处理用户恳求,并将处理结果存入系统中,同时在jsp

57、页面中通过struts 2的标签库输出这种处理结果。系统中还使用了servlet作为web层的实现技术,以下以更新信息为反例简单介绍下实现方式。如图4-10所示。本章主要介绍了整个系统的设计思路,通过mvc模式才能愈发快捷便捷的理清脉络,使设计路线更下清晰有效。图4-10用户更新信息实现类图5 系统实现系统的实现是整个开发过程中最重要的一环,设计做得再好,系统未能实现,一切都是徒劳,所以系统的实现就意味着整个项目的成功与否。5.1开发环境布署系统采用主流框架ssh并使用服务器tomcat,myeclipse 8.5进行开发。系统中须要完成hibernate和spring的整合,下面将针对整合进

58、行剖析。hibernate和spring的整合,spring的ioc容器是一个功能十分强悍的鞋厂,不仅可以管理系统中的业务逻辑组件,还可以管理系统中的数据源,也可以管理hibernate的sessionfactory实例。一旦我们将sessionfactory配置成一个普通的bean,当spring容器启动时,系统将手动创建sessionfactory bean。因为spring的ioc容器将sessionfactory列入了容器的管理之中,而且系统的dao组件也在容器的管理之中。因此,spring的ioc容器还可以将sessionfactory实例注入到每位须要持久化操作的组件中,从而以松耦合的形式来管理hibernate的sessionfactory,避免了直接在dao容器中主动获取sessionfactory实例。但在开发过程中发觉这样开发效率不高,每次对文件做了更改都得重新布署工程,同时重启服务器,所以开发过程中引入了hibernate的配置文件hibernate.cfg.xml对hibernate的sessionfactory进行管理。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论