基于web的在线实时通讯系统的设计与实现  毕业设计_第1页
基于web的在线实时通讯系统的设计与实现  毕业设计_第2页
基于web的在线实时通讯系统的设计与实现  毕业设计_第3页
基于web的在线实时通讯系统的设计与实现  毕业设计_第4页
基于web的在线实时通讯系统的设计与实现  毕业设计_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

JIUJIANGUNIVERSITY毕业论文题目基于WEB的在线实时通讯系统的设计与实现英文题目THEDESIGNANDIMPLEMENTATIONOFTHEINSTANTMESSAGINGSYSTEMBASEDONWEB院系信息科学与技术学院专业计算机科学与技术姓名廖江晨班级学号A081125指导教师杨振宇二一二年五月摘要随着互联网的快速发展,网络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民的青睐。目前,出现了很多非常不错的聊天工具,其中应用比较广泛的有NETMEETING、腾讯QQ、MSNMESSAGER等。聊天通讯系统的诞生拉进了人们的距离,沟通交流更加方便了。系统的开发也是受到WEBQQ的启示,开发主要包括一个网络聊天服务器程序和一个网络聊天客户程序两个方面。前者通过SOCKET套接字建立服务器,服务器能读取、转发客户端发来信息,并能刷新用户列表。后者通过与服务器建立连接,来进行客户端与客户端的信息交流。其中用到了局域网通信机制的原理,通过直接继承THREAD类来建立多线程。开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(CLIENT/SERVER模式)、网络编程的设计方法等。在网络编程中对信息的读取、发送。系统的目标就是能够实现在线实时通讯,系统采用MYECLIPSE为基本开发环境,使用SSH框架以及AJAX等进行编写,首先可在短时间内建立系统应用原型,然后,对初始原型系统进行不断修正和改进,直到形成可行系统。系统具有良好的程序结构和人机交互界面,通用性强,既可独立为一个小型聊天网站,也可应用于其它不同需求的网站。关键词实时通讯,多线程,服务器ABSTRACTWITHTHERAPIDDEVELOPMENTOFTHEINTERNET,NETWORKCHATTOOLSALREADYASAKINDOFIMPORTANTINFORMATIONCOMMUNICATIONTOOL,ISMOREANDMORETHEFAVOUROFINTERNETUSERSATPRESENT,THEREAREMANYVERYNICECHATTINGTOOLS,WHICHISWIDELYNETMEETING,TENCENTOFQQ,MSNMESSAGERANDSOONCHATCOMMUNICATIONSYSTEMOFTHEBIRTHOFTHEDRAWNINTOPEOPLESDISTANCE,MORECONVENIENTCOMMUNICATIONTHEDEVELOPMENTOFTHESYSTEMISALSOBEINGWEBQQREVELATION,DEVELOPMENTMAINLYINCLUDESANETWORKCHATSERVERPROGRAMANDANETWORKCHATCLIENTPROGRAMTWOASPECTSTHEFORMERTHROUGHTHESOCKETSOCKETSETUPTHESERVER,WHICHCANBEREAD,FORWARDFROMTHECLIENTINFORMATION,ANDCANREFRESHUSERLISTTHELATTERTHROUGHTOASERVERCONNECTION,TOTHECLIENTANDTHECLIENTINFORMATIONEXCHANGEAMONGTHEMTHEUSEOFTHELOCALAREANETWORKCOMMUNICATIONMECHANISMOFPRINCIPLE,THROUGHTHEDIRECTLYINHERITEDTHREADCLASSTOESTABLISHMULTITHREADINGINTHEDEVELOPMENTOFTHECOMPUTERNETWORKPROGRAMMINGELEMENTARYTHEORYKNOWLEDGE,INCLUDINGTCP/IPPROTOCOL,CLIENT/SERVERMODECLIENT/SERVERMODE,NETWORKPROGRAMMINGDESIGNMETHOD,ETCINTHENETWORKPROGRAMMINGTOREAD,SENDINFORMATIONTHEGOALOFTHISSYSTEMISTOACHIEVETHEREALTIMEONLINECOMMUNICATIONS,SYSTEMUSESMYECLIPSEASTHEBASICDEVELOPMENTENVIRONMENTANDJAVALANGUAGETOWRITE,FIRSTINASHORTTIMECANESTABLISHSYSTEMAPPLICATIONPROTOTYPE,ANDTHEN,ONTHEBASISOFTHEPROTOTYPESYSTEMMODIFICATIONANDIMPROVEMENTCONTINUOUSLY,UNTILFORMFEASIBLESYSTEMTHISSYSTEMHASAGOODPROGRAMSTRUCTUREANDMANMACHINEINTERFACE,VERSATILITY,BOTHASAINDEPENDENTSMALLCHATSITE,ALSOCANBEAPPLIEDTODIFFERENTNEEDSOFOTHERWEBSITESKEYWORDSREALTIMECOMMUNICATION,MULTITHREADING,SERVER目录摘要IABSTRACTII1概述11课题来源112国内外背景213课题目标214论文结构22技术支持21MVC简介422HIBERNATE简介523STRUTS简介524SPRING简介625AJAX简介73系统需求分析31系统概述932系统参与者1033系统功能分析1134系统用例图124系统设计41系统设计目标1742系统总体架构设计1743数据库设计1944PO层设计(数据持久层)2345DAO层设计2546SERVICE层设计2647WEB层设计285系统实现51开发环境部署3052PO层的实现3153SERVICE层实现3354DAO实现3455WEB层实现366系统测试40结束语44致谢45参考文献461概述“但愿人长久,千里共婵娟。”大词人苏东坡这句脍炙人口的表达对故人极度思恋的千古佳句流传至今,引起了多少游子的深切共鸣时空距离的存在,阻隔了无数千里之遥的亲人朋友们的情感交流,虽有鸿雁帮忙传送书信,可漫长的等待却成为时间异步的真实写照。然而随着当今社会计算机科学技术的迅猛发展和网络的出现,信息资源的实时共享成为现实,更重要的是它提供了一种极为直接的即时的交互方式,当然这种交互不单是指数据、信息之间的传递,也包括人与人之间的互相交流,各种聊天软件和在线聊天室正是承载这类交互的媒介,人们之间的交流几乎完全可以不受时空的约束,“但愿人长久,千里共婵娟”在现今可以蜕变成“只需网上游,千里共聊天”了。由于INTERNET/INTERNAT的广泛使用,客户与服务器端之间能否有效地进行交互成为我们要解决的问题。JSP是一种在服务器端嵌入JAVA代码的脚本语言,是开发WEB动态网站重要而快速、有效的工具,在保证最大可操作性的前提下,它提供了比一般脚本语言(如ASP、PHP)和CGI更快的执行速度。由此可见,作为一种WEB实现技术,它的效率是很高的,这一点正好符合了聊天系统所要求的实时性。JSP自身的安全性,再加上实现模式的特点,完全能够达到聊天系统的即时性和保密性的要求,保证了人们在交流中需要维护的隐私权。此外,作为JAVA平台的一部分,JSP拥有JAVA语言“一次编写,随处运行”的特点,它的平台无关性使其可以轻松移植到其它平台上运行。种种优点使得JSP技术为目前各式各样的聊天系统的实现都打下了良好的基础1。11课题来源“朋友一生一起走”、“朋友不曾孤单过”这两句歌曲朋友中的歌词相信大家早已耳熟能详了,朋友对于我们每个人来说,那是我们人生中何其重要的组成部分。常言道在家靠父母,出门靠朋友。谁又不希望自己能多几个朋友,要是朋友能五湖四海该多好啊这在网络技术还欠发达的时候看来似乎是不可能的事,而今,各式各样的网络交友层出不穷,大大增加了大家交友的途径。12国内外背景随着互联网的发展,互联网服务也充斥着我们生活的方方面面。作为互联网免费服务中最早被网民认知并接受的互联网服务之一,即时通讯软件在慷慨的服务于广大网民数年之后,获得的是巨大的网民基础。以用户为基础的即时通信产业在满足于用户的基本需求的同时,也延伸发展开辟出了多平台、多运营模式的即时通讯外延市场2。近年来随着WEB的发展给及时通信提供了更大的发展空间。13课题目标现今社会,信息技术已经融入到社会生活的各个方面,人们的联系也从书信来往到电话联系,从短信发送到网络聊天,计算机渐渐成为人们工作生活不可或缺的一部分。这也就促使了即时通讯行业的迅速发展,各类的聊天软件也就应运而生。传统的客户端即时通信软件需要下载即时通信客户端安装之后才能使用,聊天工具的繁多以至酷爱聊天走到哪里聊到哪里的人用别人电脑的时候,如果没有那种聊天工具就需要不厌其烦的下载。而基于WEB浏览器的即时通信服务,不需要下载客户端,打开浏览器联网即可完成即时通信,在WEB浏览器中获得基础的IM服务,具有WEB产品固有的便利性特点,也保持了用户在客户端软件的一些操作习惯。作为客户端即时通信软件的有力补充,即时通信(IM)将为用户提供基于WEB的IM服务3。该系统的推出方便了大家的通信,同时也丰富了大家的“在线生活”平台。14论文结构论文共分六章,详细介绍了系统的整个实现过程,分别是概述、技术介绍、需求分析、系统设计、系统实现、系统测试等几大模块。概述介绍课题。(1)技术介绍对系统应用到的当下流行的几大实用性技术进行简单的介绍,方便大家理解。(2)需求分析简单介绍系统需要实现的功能,并介绍用例关系。(3)系统设计介绍系统的设计思路与想法。(4)系统实现详细介绍系统的实现过程,并附带核心代码块。(5)系统测试系统完成后,不断进行测试修复BUG、完善系统。本章主要介绍了课题的来源、开发背景、设计目标以及论文结构,在开发过程中要严格按照所分析的来执行实现,避免不必要的错误,对读者而言也能在起初对整个课题有个大概的了解,对全文的理解加深印象。2技术支持WEB技术日新月异,第二章将对论文中应用到的几大主流技术MVC模式、SSH框架、JSP和数据库做一简单介绍,方便读者更好的了解论文。21MVC简介一个框架就是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法。简单的说,框架就是软件开发者在实践中总结出的一些开发标准。这些标准可以帮助开发人员以成功的经验模式来开发同类型的系统4。使用框架可以给开发人员带来以下好处(1)在好的框架下,开发人员只需要编写一些必须的代码,他们不需要直接接触底层的API;(2)经过良好设计的框架可以为程序提供清晰的结构并且提高程序的内聚性;(3)一个容易使用的框架可以通过一些例子和文档为用户提供最佳实践;(4)成熟框架的代码更精炼,更健壮,比自己的代码容易测试和维护。JAVAPLATFORM,ENTERPRISEEDITIONJAVAEE本身也提供了一些框架。比如ENTERPRISEJAVABEANEJB容器。EJB为用户提供了一系列“重量级”企业级服务,给了我们看起来完整的服务策略,但是,它也给开发带来了许多负面效果。由于EJB提供的企业级服务是强制性的,从而使系统变得很庞大,难以部署,性能也大大降低,给开发和应用带来了很多不便,增加了系统的开销,同时也使得测试变得困难。与传统的基于EJB的JAVAEE框架相对应的,目前JAVAEE业界出现了很多优秀的轻量级框架,它们不仅可以实现传统框架所能做到的事情,而且可以通过轻量级的方式去实现5。总体上说,它们具有以下优点(1)轻量级JAVAEE框架的服务是可配置的,从而为系统省去很多不必要的开销;(2)轻量级JAVAEE框架的良好扩展性可以保证引擎在将来可以不断地被扩展以适应新的需求。22HIBERNATE简介HIBERNATE是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得JAVA程序员可以随心所欲的使用对象编程思维来操纵数据库6。HIBERNATE可以应用在任何使用JDBC的场合,既可以在JAVA的客户端程序使用,也可以在SERVLET/JSP的WEB应用中使用,最具革命意义的是,HIBERNATE可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。HIBERNATE的核心接口一共有6个,分别为SESSION、SESSIONFACTORY、TRANSACTION、QUERY、CRITERIA和CONFIGURATION。这6个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。HIBERNATE中提供了两级CACHE,第一级别的缓存是SESSION级别的缓存,它是属于事务范围的缓存。这一级别的缓存由HIBERNATE管理的,一般情况下无需进行干预;第二级别的缓存是SESSIONFACTORY级别的缓存,它是属于进程范围或群集范围的缓存。这一级别的缓存可以进行配置和更改,并且可以动态加载和卸载。HIBERNATE还为查询结果提供了一个查询缓存,它依赖于第二级缓存。HIBERNATE版本更新速度很快,目前为止有两个阶段性的版本HIBERNATE2,HIBERNATE3和HIBERNATE4,这一点程序员从其JAR文件名便可以看出来。目前最新发布的版本是HIBERNATECORE411FINAL。HIBERNATE2系列的最高版本是HIBERNATE218,HIBERNATE3系列的最高版本是HIBERNATEDISTRIBUTION3610FINALDIST版,但目前使用较多且较稳定的版本是HIBERNATE313或HIBERNATE312。另外,自HIBERNATE3发布以来,其产品线愈加成熟,相继出现了HIBERNATE注释、HIBERNATE实体管理器、HIBERNATE插件工具等一系列产品套件。在方便程序员使用HIBERNATE进行应用程序的开发的同时,也逐渐增强了HIBERNATE产品线的实力7。23STRUTS简介STRUTS是APACHE软件基金会(ASF)赞助的一个开源项目。由于本系统的开发过程中使用的是STRUTS2,在此就只对STRUTS2做简单的介绍。STRUTS2号称是一个全新的框架,但这仅仅是相对STRUTS1而言。STRUTS2与STRUTS1相比,确实有很多革命性的改进,但它并不是新发布的新框架,而是在另一个赫赫有名的框架WEBWORK基础上发展起来的。从某种程度上来讲,STRUTS2没有继承STRUTS1的血统,而是继承WEBWORK的血统。因为STRUTS2是WEBWORK的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证而且吸收了STRUTS1和WEBWORK两者的优势,因此,是一个非常值得期待的框架8。APACHESTRUTS2是一个优雅的,可扩展的JAVAEEWEB框架。框架设计的目标贯穿整个开发周期,从开发到发布,包括维护的整个过程。APACHESTRUTS2即是之前大家所熟知的WEBWORK2。在经历了几年的各自发展后,WEBWORK和STRUTS社区决定合二为一,也即是STRUTS29。24SPRING简介SPRING是一个开源框架,它由RODJOHNSON创建。它是为了解决企业应用开发的复杂性而创建的。SPRING使用基本的JAVABEAN来完成以前只可能由EJB完成的事情。然而,SPRING的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何JAVA应用都可以从SPRING中受益10。(1)目的解决企业应用开发的复杂性;(2)功能使用基本的JAVABEAN代替EJB,并提供了更多的企业应用功能。(3)范围任何JAVA应用。简单来说,SPRING是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架11。以下是SPRING的特点(1)轻量从大小与开销两方面而言SPRING都是轻量的。完整的SPRING框架可以在一个大小只有1MB多的JAR文件里发布。并且SPRING所需的处理开销也是微不足道的。此外,SPRING是非侵入式的典型地,SPRING应用中的对象不依赖于SPRING的特定类;(2)控制反转SPRING通过一种称作控制反转(IOC)的技术促进了松耦合。当应用了IOC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IOC与JNDI相反不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它;(3)面向切面SPRING提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(AUDITING)和事务(TRANSACTION)管理)进行内聚性的开发。应用对象只实现它们应该做的完成业务逻辑仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持;(4)容器SPRING包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个BEAN如何被创建基于一个可配置原型(PROTOTYPE),你的BEAN可以创建一个单独的实例或者每次需要时都生成一个新的实例以及它们是如何相互关联的。然而,SPRING不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用;(5)框架SPRING可以将简单的组件配置、组合成为复杂的应用。在SPRING中,应用对象被声明式地组合,典型地是在一个XML文件里。SPRING也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。所有SPRING的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为SPRING中的各种模块提供了基础支持;25AJAX简介WEB应用的交互如FLICKR,BACKPACK和GOOGLE在这方面已经有质的飞跃。这个术语源自描述从基于WEB的应用到基于数据的应用的转换。在基于数据的应用中,用户需求的数据如联系人列表,可以从独立于实际网页的服务端取得并且可以被动态地写入网页中,给缓慢的WEB应用体验着色使之像桌面应用一样。AJAX的核心是JAVASCRIPT对象XMLHTTPREQUEST。该对象在INTERNETEXPLORER5中首次引入,它是一种支持异步请求的技术。简而言之,XMLHTTPREQUEST使您可以使用JAVASCRIPT向服务器提出请求并处理响应,而不阻塞用户。许多重要的技术和AJAX开发模式可以从现有的知识中获取。例如,在一个发送请求到服务端的应用中,必须包含请求顺序、优先级、超时响应、错误处理及回调,其中许多元素已经在WEB服务中包含了,就像现在的SOA。AJAX开发人员拥有一个完整的系统架构知识。同时,随着技术的成熟还会有许多地方需要改进,特别是UI部分的易用性。AJAX开发与传统的CS开发有很大的不同。这些不同引入了新的编程问题,最大的问题在于易用性。由于AJAX依赖浏览器的JAVASCRIPT和XML,浏览器的兼容性和支持的标准也变得和JAVASCRIPT的运行时性能一样重要了。这些问题中的大部分来源于浏览器、服务器和技术的组合,因此必须理解如何才能最好的使用这些技术。综合各种变化的技术和强耦合的客户服务端环境,AJAX提出了一种新的开发方式。AJAX开发人员必须理解传统的MVC架构,这限制了应用层次之间的边界。同时,开发人员还需要考虑CS环境的外部和使用AJAX技术来重定型MVC边界。最重要的是,AJAX开发人员必须禁止以页面集合的方式来考虑WEB应用而需要将其认为是单个页面。一旦UI设计与服务架构之间的范围被严格区分开来后,开发人员就需要更新和变化的技术集合了12。本章主要对时下在JAVAEE开发中得到广泛应用的三大主流框架SSH、JSP、ORACLE、AJAX等技术,以及对在WEB开发中广泛应用的MVC模式做了一定介绍。3系统需求分析需求分析,即是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。在软件工程中,需求分析指的是在建立一个新的或改变一个现存的电脑系统时描写新系统的目的、范围、定义和功能时所要做的所有的工作。需求分析是软件工程中的一个关键过程。在这个过程中,系统分析员和软件工程师确定顾客的需要。只有在确定了这些需要后他们才能够分析和寻求新系统的解决方法。需求分析阶段的任务是确定软件系统功能13。需求分析是理解真实世界中的问题和用户需求,并找出能满足这些需求的解决方案的过程。需求分析的目标是在开发活动开始以前,对问题的解决方法得到更好的认识。由此可见,需求分析在整个项目过程中具有举足轻重的地位。它甚至决定了以后开发活动的大方向。能否得到一个准确全面的需求分析结果将直接影响软件开发项目的质量和成败14。以下将结合开发的具体情况,对目标系统的功能性需求、非功能性需求进行分析。31系统概述此次开发的主要目标是实现一个实时通讯系统,此系统的主要功能是在线注册过的用户能够通过此交流平台获得更加快捷、方便的沟通,本系统的系统结构图如图31所示。系统为每个注册用户提供方便的沟通平台,在该系统内用户可以通过查找添加自己想要的好友,与其进行在线交流,进行简单的文件传输。每个用的登录之后都会启动一个单独的线程,作为该用户整个系统的贯穿,无论是登录、聊天、查询更改等功能中都需要用到,所以客户端与服务器端的连接非常重要。用户注册用户登录即时通讯个人管理好友列表好友查询添加退出系统在线即时通讯设置个人信息修改密码更新心情好友列表更新好友状态检测查看好友资料消息发送消息接收图31系统功能结构图32系统参与者根据需求分析的结果,通过最终的用例模型,可以确定系统的主要功能和开发目标。另外,系统还应该具备使用友好、安全等用例文档无法描述的非功能性需求具体功能性需求和非功能性需求15。由于我们使用用例来记录系统的功能性需求,所以在需求分析的第一步我们需要明确系统的参与者。参与者ACTOR是具有行为能力的事物,可以是一个人由所扮演的角色来识别、计算机系统或组织。经分析确认,系统的参与者主要是注册用户。用户注册成功之后,可以进行一同功能的一系列操作,如对好友进行查询添加、与好友进行聊天、查看聊天记录等。33系统功能分析331功能需求系统的主要功能是为广大用户提供一个方便快捷的聊天沟通平台,以下会主要介绍各个模块。系统各项需求功能大致如下(1)第一次使用系统的用户通过填写个人信息来进行注册,并验证用户名的有效性是否已被注册;(2)使用已经注册的用户可以验证登录信息一般指用户名和密码后登录系统;(3)可以修改密码;(4)能够选择对象进行聊天;(5)可以查找好友;(6)进行好友添加;(7)能够进行文件传输;(8)可以查看好友资料;(9)可以查看聊天记录;(10)可以更新个人资料。332性能需求(1)时间特性需求;实时通讯系统的查询响应取决于服务器和WEBBROWSER之间的连接带宽以及同时连接的客户端数目,系统在设计上应以快速响应管理人员查询请求为优先保证目标。(2)适应性需求;系统在WINXP及以上版本上均可运行,硬件需求为硬盘容量至少2G,内存512M,为完成系统所有功能,在系统中必须安装支持数据库的软件,如ORACLE,MYECLIPSE85等,操作方式需按正常规范操作方式进行,本系统便于修改,在开发计划发生变动时也可方便的进行相应的修改,以适应更高的要求,总而言之本系统具有很好的适应能力。(3)安全性需求。由于在线即时聊天系统信息量会非常大,所有在对用户进入系统时要保证速度。在交流过程中又要保证通信的实时性。对于整个系统,需要完整的权限控制,防止某些人恶意的攻击系统,修改原始记录。同时对于数据库中的数据需要定时备份,防止系统数据丢失。此外,系统要求用户在登陆时需要身份验证。34系统用例图根据需求分析的结果,通过最终的用例模型,可以确定系统的主要功能和开发目标。由于使用用例来记录系统的功能性需求,所以在需求分析的第一步需要明确系统的参与者。参与者(ACTOR)是具有行为能力的事物,可以是一个人(由所扮演的角色来识别)、计算机系统或组织。经分析确认,系统的参与者主要是用户。用户首先进行注册,然后登录系统进行一系列的操作。用例图是对系统语境的勾画,显示了系统的边界,以及如何使用系统。系统用户的用例图如图31所示。该图详细的描述了系统用的整个用例,包括个人管理、聊天、好友三个模块,而每个模块中又包含了子模块。如个人模块中,包含了查看个人资料、更新个人资料、修改密码、上传下载等;聊天模块中又包含了查看聊天对方个人信息、发送接收信息、传送和接收文件、查看聊天记录等;在好友模块中,包含了查找和添加好友。每个模块实现的功能都是不一样的,以对象实现来划分模块有利于设计与管理,功能划分也很清晰,不至于混淆。用例的设计合理不但能使开发人员更好的掌握脉络,也有利于用户拥有更好的体验。USER上上上上上上上上上上上上上上上上上上上上上上上上上上上上上上上上上上上上上上上上图32用户用例图从图31可以看出参与者用户主要有聊天、个人管理和查找好友等模块。几个用例实现的功能大致相近,接下来对其中的几个简单用例进行分析。用例添加好友;用例图如图33所示。USERADD图33添加好友用例用例规约如表31所示。表31添加好友用例规约用例名称添加好友用例IDTEST_01角色用户用例说明该用例的主要功能是添加好友,点击添加好友触发前置条件成功登陆参与者动作系统响应基本事件流1、进入主界面,用户点击“查询好友”按钮3、用户添加联系人,点击“添加”2、系统响应事件,进入查找界面4、判断是否合法,若合法,则添加成功;若不合法,则进入41其它事件流无参与者动作系统响应异常事件流411若好友已经添加413若不存在该用户412系统提示好友已存在414系统提示没有该用户用例更新资料用例;用例图如图34所示。USERUPDATE图34用户更新资料用例用例规约如表32所示,该规约详细的介绍了用户更新资料用例的条件、执行过程以及出现的问题解决方式。当用户登陆成功进入主界面时,点击个人资料,然后对个人资料进行修改,系统会对输入的内容进行判断,是否该内容符合修改需求,弱不符合则进行相应返回,若符合要求,则进行成功跳转,并将其显示。表32用户修改资料用例规约用例名称修改资料用户IDTEST_02角色用户用例说明该用例主要实现的功能是用户实现对自己资料的修改操作前置条件用户成功登录主页参与者动作系统响应基本事件流1、点击个人资料3、用户对个人的姓名、性别、年龄等信息进行修改,点击“修改”2、系统相应事件,跳转至“修改信息”页面4、系统对用户的输入进行判断,若合法,则返回。其它事件流无异常事件流无后置条件信息修改成功,返回用户活动图如图35,其他不再累述,用户活动图能够详细的表述出用户的整个活动流程,方便读者全方面理解。由此,该系统的功能需求已清晰地呈现出来,然而系统的功能需求也是异常重要的一个方面。软件产品的非功能性需求是指产品为了满足用户业务需求而必须具备能性需求以外属性或品质如可靠性性能响应时间容错性扩展性等等。这些需求将在系统实现初步功能后逐步进行完善。登录已登录已注册注册查询好友好友聊天更新资料修改密码存在退出YNYNY图35用户活动图4系统设计一个良好的系统设计是系统完成的保证,本章将从PO层、DAO层、SERVICE层以及WEB层对系统进行设计分析。41系统设计目标通过需求分析,已经得到了功能性需求和非功能性需求的列表和详细说明。在系统设计阶段,将在需求分析的基础上对系统的技术、逻辑、功能、数据、安全等方面做出概要设计。主要工作有根据实际情况划分系统架构层次,从用例中抽象出用于指导开发的业务领域模型,定义层与层之间、模型与模型之间的服务接口约束,解决系统数据持久化与数据交互问题,并为系统性能、安全、部署等问题提出可行的解决方案。该阶段的目标是得到一个可用的、健壮的、能满足开发需要的系统框架,为下一步的详细设计提供技术基础。42系统总体架构设计该系统采用JAVAEE三层结构,分为表现层、业务逻辑层和数据服务层。三层体系将业务规则、数据访问等工作放到中间层处理,客户端不直接与数据库交互,而是通过控制器与中间层建立连接,再由中间层与数据库交互。表现层在设计过程中使用JSP页面结构充当,负责收集用户的请求数据,如学生用户的注册请求、操作请求等,并将其提交到指定的控制器,页面中完全禁止JAVA脚本,主要是用STRUTS的标签库进行描述。中间层采用SPRINGHIBERNATE,为了分离控制层与业务逻辑层,又可细分为WEB层,就是MVC模式里的“C”CONTROLLER,负责表现层与业务逻辑层的交互,调用业务逻辑层,并将业务数据返回给表现层显示。MVC框架采用流行的STRUTS。SERVICE层业务逻辑层,负责实现业务逻辑,对DAO对象进行正面模式的封装。DAO层数据访问层,负责与持久化对象交互,封装了数据的增、删、查、改CRUD原子操作。P0层持久化对象层,通过实体一关系映射工具将关系型数据库的数据映射成对象,实现以面向对象方式操作数据库,本系统采用HIBERNATE作为0/RM框架,自定义数据库缓冲池作为不成。中间层是整个系统的关键所在,而SPRING的作用贯穿了整个中间层,将WEB层、SERVICE层、DAO、PO无缝整合,其实现模式如图41所示。用户界面采集/显示数据JSPWEB表示层STRUTS2/SERVLETSERVICE层业务逻辑层DAO层数据访问层数据库ORACLESPRING注入图41系统总体架构图43数据库设计数据库的设计至关重要,系统功能的强大与否最初的数据库设计起着关键性意义。用户注册的用户,用以进行聊天的帐号;好友好友皆为已注册的用户,用户登录系统后即可按条件进行查找添加;信息用户用以交互,沟通。431实体联系图USERIDACCOUNTNAMEPASSWORDAGESEXICONCITYINTRODUCEREGISTTIMELASTLOGINIPLASTLOGINTIMEE图42用户实体图FRIENDIDUSERIDFRIENDIDMESSAGESENDIDRECEIVEIDCONTENTREADEDIDSENDDATEE图43好友实体图图44信息实体图用户实体图如图42所示;好友实体图如图43所示;信息实体图如图44所示。上述三图分别描绘了该实体的属性。系统的ER图如图45所示,清晰的表述了三个实体类之间的关系。图45ER图USERFRIENDMESSAGEIDUSERIDFRIENDIDSENDIDRECEIVEIDCONTENTSENDDATEREADEDIDIDACCOUNTNAMEAGESEXICONCITYREGISTTIMELASTLOGINIPLASTLOGINTIMEPASSWORDINTRODUCE属于接/收N1NN432数据库基本表设计数据库表的设计很大程度上决定了你的系统的开发效率,所以一个好的数据库设计是非常有必要的。表41用户信息表数据库表属性类型描述ID(主键)VARCHAR2标识每一个用户ACCOUNTVARCHAR2用户昵称登录的账户号PASSWORDVARCHAR2登录密码NAMEVARCHAR2真是姓名SEXVARCHAR2性别REGISTERTIMEDATE注册时间LASTLOGINTIMEDATE上次登陆时间LASTLOGINIPVARCHAR2上次登录IPCITYVARCHAR2所在地AGENUMBER年龄INTRODUCEVARCHAR2个人详细介绍OICS_USERICONVARCHAR2头像如表41所示,该表为用户表,各字段为用户的属性。表42好友信息表数据库表属性类型描述ID(主键)VARCHAR2标识每一个好友组USERIDVARCHAR2用户IDOICS_FRIENDFRIENDIDVARCHAR2该用户所对应的好友如表42所示,该表为系统用户好友表,USERID为登录用户所对应的ID,FRIENDID为登录用户所添加好友的ID为其他用户。表43聊天记录表数据库表属性类型描述ID(主键)VARCAHR2标识每一条聊天信息SENDIDVARCHAR2标识发送信息的对象RECEIVEIDVARCHAR2标识接收信息的对象CONTENTVARCHAR2记录传输信息的内容SENDDATEDATE发送的时间OICS_MESSAGEREADEDVARCHAR2标记是否已读如表43所示,该表为聊天信息表,即聊天记录的存储表,SENDID为用户发送方的ID,RECEIVEID为聊天时接收端用户ID值,CONTENT为发送信息内容,SENDDATE为发送的时间。44PO层设计(数据持久层)模型层可以说是运行时系统的工作核心,基本上所有的业务逻辑处理和数据操作都在该层实现。在信息系统中,该层一般会被分成业务服务层(SERVICE)和数据访问层(DAO)。服务层职责是对模块的“原子用例”进行实现,持久层用于配合服务层的数据存储操作。在这两个细分的层次中的所处理的JAVABEAN名称也不一样,在SERVICE中,处理的是BUSSINESSOBJECT,在DAO中,处理的JAVABEAN称为PERSISTENTOBJECT(PO)。虽然他们代表的意义和职能不一样,但表现形式却有可能相同。基于职责的考虑,除非难以本地实现的需求,一般不推荐把业务逻辑放到数据库的存储过程中,因为数据库上操作是由DBA维护的,WEB系统无法把控制权延伸到数据库上。而且这样破坏了系统的完整性,同时也不利于移植和维护。由上面的数据表结构,可以轻松地得到系统的域模型层对象,即把数据库中涉及到的所有表转化为持久化类即完成了持久化对象,系统的持久化对象用HIBERNATEPO完成,故在完成类的持久化过程中还必须提供对应的映射文件。以信息实体举例(FRIENDHBMXML)。域模型层的结构如图46所示。图46实体对象的映射对应关系HIBERNATE配置文件主要代码如下持久化对象MESSAGE实体对象MESSAGE映射文件(MESSAGEHBMXML)然后对MESSAGE类的属性方法进行详细解释MESSAGEIDSTRINGSENDIDSTRINGRECEIVEIDSTRINGCONTENTSTRINGSENDDATEDATEREADEDBOOLEANGETIDSETIDGETSENDDATESETSENDDATEISREADEDSETREADEDGETCONTENTSETCONTENTGETSENDIDSETSENDIDGETRECEIVEIDSETRECEIVEID图47聊天信息的类图如图47中展现了好友类的属性及相关方法,其具体描述如属性(1)ID/主键,自动生成(2)SENDID/发送信息用户ID(3)RECEIVEID/接收方ID(4)CONTENT/聊天信息内容(5)SENDDATE/信息发送时间(6)READED/信息读取状态是否已读方法(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)SETSENDDATE/设置发送信息时间45DAO层设计DAO层的主要功能就是实现对持久化对象的访问,业务逻辑层调用DAO层的方法与数据库进行交互,实现业务逻辑功能。为了增加系统的可复用性,同时减小了系统的各层间的耦合性,在DAO层又细分为两层一层为数据访问接口层,该层为每个持久化对象声明一个DAO接口,并进行常用的持久化对象的方法的声明;二层为数据访问实现层,该层主要实现对持久化对象的访问,该层通过实现数据访问接口层的接口。同时在两层都分别定义了一个接口IMESSAGESERVICE和类MESSAGESERVICE实现对数据库的通用操作操作,其他的DAO对象和DAO实现对象分别继承这两个类。由以上的描述,可以得出在DAO层的结构图47所示(以MESSAGE实体类为例)。从图48可以看出DAO层的设计原则是分为接口层和实现层,其中接口层和实现层的实现相视,首先建立一个基础类(如图48中的MESSAGESERVICE和SIMPLEHIBERNATEDAO)完成相对应的数据操作,而其他DAO层的类只需实现该基础类,便可以进行对应的数据操作。如果在开发过程中发现有些方法基础类中没有实现,则只需在继承基础类的前提下添加上自己需要的方法即可,如此大大提高了编码效率。DAO层的类图如图47所示,其设计方案如图48所示,遵循如上所述的实现原理,所有的DAO类皆实现了基础类。IUSERDAOIFRIENDDAOIMESSAGEDAOUSERDAOFRIENDDAOMESSAGEDAOIBASEDAOSIMPLEHIBERNATEDAOHIBERNATEDAOSUPPORT图48DAO层之间的关系如图48中所描绘的,所有的DAO类都继承了SIMPLEHIBERNATEDAO以及实现了IBASEDAO基础DAO类,使得其扩展性更好,方便以后换框架。46SERVICE层设计业务逻辑层的主要目的即完成对系统功能的具体实现,在该层通过调用DAO层(通过接口调用),完成对数据的操作,同时实现系统中需要实现的各项功能。该层的设计原则同DAO层相似,首先建立接口层,该层声明在该层需要实现的功能方法;其次就是接口实现层,在该层调用DAO层的相关方法同时实现业务接口层对应的接口完成业务功能的实现。系统中业务逻辑组件和DAO组件及数据之间的依赖关系如图49所示(MESSAGE为例)。IMESSAGEDAOMESSAGEDAOIBASEDAOSIMPLEHIBERNATEDAOHIBERNATEDAOSUPPORTMESSAGESERVICEIMESSAGESERVICE图49业务逻辑组件和DAO组件及数据之间的依赖关系图在SERVICE层中,利用SPRING的依赖注入与控制反转进行横向切入,提高效率。47WEB层设计WEB是在INTERNET上的一种新的资源组织形式,也是一种新的新的信息服务方式。它是由WEB浏览器和WEB服务器两部分组成。WEB浏览器主要用于在用户机器上处理和显示超文本文件即WEB页面,WEB服务器接收WEB浏览器传送来的WEB资源和URL地址,并将响应的文本或信息提供给客户端的WEB浏览器。WEB服务器系统通过超文本链接功能和HTTP协议,将文本、图像、声音和其他INTERNET上的资源紧密地结合起来,只要在WEB浏览器的地址栏中输入WEB资源的URL地址,既可以WEB页面的形式显示在WEB浏览器上,并且组成WEB的超大型文本文件通过超链接相互连接,只要在链接点上单击一下,就可以从当前页面跳转到某个其他页面,WEB资源的这种方便的访问方式大大加速了INTERNET的普及使用。WEB的基础上,在人们开发出了各种各样的即时通讯系统。WEB层的主要任务有(1)显示用户界面;(2)验证用户的输入;(3)与服务器进行交互。系统中采用STRUTS2作为系统中MVC框架。在控制器层都由STRUTS2的ACTION充当,这些ACTION通过调用系统业务逻辑层的业务逻辑方法来处理用户请求,并将处理结果存入系统中,同时在JSP页面中通过STRUTS2的标签库输出这些处理结果。系统中还使用了SERVLET作为WEB层的实现技术,以下以更新信息为例子简单介绍下实现方法。如图410所示。本章主要介绍了整个系统的设计思路,通过MVC模式能够更加快捷方便的理清脉络,使设计路线更下清晰有效。UPDATESERVLETDOGETDOPOSTUSERDAOIUSERDAOSIMPLEHIBERNATEDAOHIBERNATEDAOSUPPORT图410用户更新信息实现类图5系统实现系统的实现是整个开发过程中最重要的一环,设计做得再好,系统无法实现,一切都是徒劳,所以系统的实现就意味着整个项目的成功与否。51开发环境部署系统采用主流框架SSH并使用服务器TOMCAT,MYECLIPSE85进行开发。系统中需要完成HIBERNATE和SPRING的整合,下面将针对整合进行分析。HIBERNATE和SPRING的整合,SPRING的IOC容器是一个功能非常强大的工厂,不仅可以管理系统中的业务逻辑组件,还可以管理系统中的数据源,也可以管理HIBERNATE的SESSIONFACTORY实例。一旦我们将SESSIONFACTORY配置成一个普通的BEAN,当SPRING容器启动时,系统将自动创建SESSIONFACTORYBEAN。因为SPRING的IOC容器将SESSIONFACTORY纳入了容器的管理之中,而且系统的DAO组件也在容器的管理之中。因此,SPRING的IOC容器还可以将SESSIONFACTORY实例注入到每个需要持久化操作的组件中,从而以松耦合的方式来管理HIBERNATE的SESSIONFACTORY,避免了直接在DAO容器中主动获取SESSIONFACTORY实例。但在开发过程中发现这样开发效率不高,每次对文件做了修改都得重新部署工程,同时重启服务器,所以开发过程中引入了HIBERNATE的配置文件HIBERNATECFGXML对HIBERNATE的SESSIONFACTORY进行管理。TRUERUNNEWJDBCORACLETHINLOCALHOST1521XELJCLIAOJIANGCHENORACLEJDBCDRIVERORACLEDRIVERORGHIBERNATEDIALECTORACLE9DIALECT在APPLICATIONCONTEXTDATAACCESSXML中的配置EDU/JJU/ENTITY/MAP/USERHBMXMLEDU/JJU/ENTITY/MAP/FRIENDHBMXMLEDU/JJU/ENTITY/MAP/MESSAGEHBMXML52PO层的实现PO层即为域模型层,主要是各个实体类的实现。目录结构如下图51实体结构目录各个实体类中只需设置类的属性以及生成SET、GET方法,以MESSAGE为例子列出关键代码PUBLICCLASSMESSAGEIMPLEMENTSJAVAIOSERIALIZABLEPRIVATESTATICFINALLONGSERIALVERSIONUID6277499417241579886L/MESSAGE类的属性PRIVATESTRINGIDPRIVATESTRINGSENDIDPRIVATESTRINGRECEIVEIDPRIVATESTRINGCONTENTPRIVATEDATESENDDATEPRIVATEBOOLEANREADED/给各个属性生成SET和GET方法PUBLICMESS

温馨提示

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

最新文档

评论

0/150

提交评论