《基于web的在线实时通讯系统的设计与实现---毕业论文.doc》由会员分享,可在线阅读,更多相关《基于web的在线实时通讯系统的设计与实现---毕业论文.doc(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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
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所示,该表为用户表,各字段为用户的属性。表4-2 好友信息表数据库表