基于jsp的电子聊天室的设计与实现.docx
《基于jsp的电子聊天室的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于jsp的电子聊天室的设计与实现.docx(35页珍藏版)》请在冰豆网上搜索。
基于jsp的电子聊天室的设计与实现
摘要
随着即时通信技术的发展,在线聊天室为众多的网民朋友提供了一个交友与娱乐的平台。
在这个平台上,人们可以通过文字与符号进行实时的交谈、聊天,是网民之间相互沟通、交流情感的最佳方式之一。
该课题旨在设计一个以服务器为中介,实现多个终端用户同时在线聊天的聊天室。
系统基于C/S模式,利用Socket套接字实现两台主机之间的彼此通信,并使用多线程技术实现了一个聊天服务器对应多个终端用户,让用户可以在局域网范围内在线聊天。
该课题还对统一建模语言UML在系统的分析与设计中的应用进行了详细的阐述,对于使用面向对象的思想开发同类系统具有很大的指导意义。
同时系统开发过程中融合了诸如JSP、JavaScript、JavaServlet、Hibernate等多种网络开发技术,对于技术的使用有一定的借鉴价值。
关键词:
客户端/服务器模式;在线聊天室;UML建模;Java网络编程
TheDesignandImplementationofElectronicChatroomBasedonJSP
Abstract
Withthedevelopmentofinstantcommunicationtechnology,onlinechatroomsprovideaplatformfordatingandentertainmentformanynetfriends.Inthisplatform,peoplecaninstantlyconversateandchatthroughwordsandsymbols,whichisoneofthebestwaysofaffectivecommunication.
Thispaperdesignsachatroom,whichisaserverforintermediary,implementingmultipleuserschattingonline.Thesystem,whichisbasedonC/Smodel,realizescommunicationbetweentwocomputersbyusingsocket,andachievesachatservercorrespondingmultipleterminalusersthroughusingmultithreadingtechnology,sothatuserscanchatinLAN.
ThepaperdescribestheapplicationofUMLinsystemicdesignandanalysisindetail,whichisofgreatsignificancefordevelopingthesimilarsystembyusingobject-orientedideas.Andvariousoftechnologiesofnetworkdevelopmentareintegratedinthesystemdevelopmentprocess,suchasJSP,JavaScript,JavaServlet,Hibernateetc,whichareofcertainreferencevaluefortheuseoftechnology.
Keywords:
Client/ServerModel;OnlineChatroom;UMLModeling;JavaNetworkProgramming
第一章绪论
1.1系统研究的背景、范围和目的
1.1.1系统研究的背景和范围
从世界上第一台计算机诞生至今只有半个多世纪,然而正因为它的方便、快捷、实用,已被应用到各个领域。
随着网络的出现,信息资源的实时共享成为现实,更重要的是它提供了一种极为直接的交互方式,当然这种交互不单是指数据、信息之间的传递,也包括人与人之间的互相交流,各种聊天软件和在线聊天室正是承载这类交互的媒介。
随着网络的发展,人们通过网络可以更方便快捷地进行信息交流和学习。
聊天系统为大家提供一个很好的交流平台,在这个平台上,人们可以通过文字与符号进行实时的交谈、聊天,在聊天室里网民可选择自已的聊天对象,与其进行对话交流,是网民之间相互沟通、交流情感的最佳方式之一。
1.1.2系统研究的目的
基于浏览器的在线聊天室是即时通信的典型代表,它可以方便地让不同地域的用户同时在线聊天。
在现有聊天室的基础之上,本课题开发了一个简单实用的在线聊天室。
现有聊天室的实现技术很多都已过时,导致系统的可扩展性和可维护性差。
基于以上原因,本课题着力于进行技术上的改进,开发一个基于JSP技术的聊天室系统,有效地解决了系统界面友好性差、扩展维护性差等问题。
系统借助于强大的可视化建模语言——UML(UnifiedModelingLanguage)去统筹整个开发流程,保证系统在后期的扩展和维护中更加快捷有效。
1.2系统的理论依据、实验基础和研究方法
1.2.1JSP技术简介
JSP(JavaServerPages)是由SunMicrosystem公司倡导、许多公司参与一起建立的一种动态网页技术标准。
JSP技术是在传统的HTML文件中插入Java程序段和JSP标记,从而形成JSP文件[1]。
Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。
插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。
1.2.2UML简介
UML(UnifiedModelingLanguage)是一种构建软件系统和文档的通用可视化建模语言,UML由3种基本构造块组成,它们分别是:
事物(Entity)、关系(Relationship)和图(Diagram),简要介绍如下:
(1)事物(Entity)
UML中的事物分为3种:
●结构事物。
包括类、接口、协作、用例、主动类、构件和节点。
●行为事物。
包括交互和状态机。
●分组事物和注释事物。
包括包和注解。
(2)关系(Relationship)
UML中的关系分为4种:
依赖(Dependency)关系、关联(Association)关系、泛化(Generalization)和实现(Realization)关系。
(3)图(Diagram)
UML中的图有8种:
类图、用例图、序列图、协作图、状态图、活动图、组件图和部署图[2]。
1.2.3Java网络编程简介
计算机网络就是将分散的多台计算机、终端和外部设备用通信线路互联起来,彼此之间实现互相通信,并且计算机的硬件、软件和数据资源大家都可以共同使用,实现资源共享。
计算机网络最重要的3个功能是数据通信、资源共享和分布处理。
为了满足上述的功能需求,计算机网络产生了两种重要应用模式:
客户端/服务器(Client/Server)模式和浏览器/服务器(Browser/Server)模式[2]。
“客户端/服务器”应用系统采用“请求/响应”的应答模式,当用户需要访问服务器时就由客户端发出“请求”,服务器接受“请求”并“响应”,然后执行相应的服务,把执行结果送回给客户端,由它进一步处理后再提交给用户。
客户端/服务器结构被设计成两层模式,客户端集中了显示逻辑和事务处理逻辑部分,而数据处理逻辑和数据库放在服务器端。
在这种模式下,客户端功能较强而比较庞大,相反服务器端的任务相对较轻。
用Java开发网络软件非常方便和强大,Java的这种力量来源于它独有的一套强大的用于网络的API,这些API是一系列的类和接口,很多位于和中。
NetworkAPI是典型的用于基于TCP/IP网络Java程序与其他程序通信,NetworkAPI依靠Socket进行通信。
Socket可以看成在两个程序进行通信连接中的一个端点,一个程序将一段信息写入Socket中,该Socket将这段信息发送给另外一个Socket中,使这段信息能传送到其他程序中。
如图1.1所示。
图1.1Socket通信原理
这部分的工作包括了相关联的3个类:
InetAddress、Socket和ServerSocket。
InetAddress对象描绘了32位或128位IP地址,Socket对象代表了客户程序流套接字,ServerSocket代表了服务程序流套接字,所有这3个类均位于包中。
1.2.4系统的实验基础和研究方法
由于本系统的实验目的是为了从技术上对现有的电子聊天系统进行改进,所以本系统在开发过程中立足于技术的使用。
除了使用基本的JSP技术之外,在前台的页面展示中,使用JavaScript技术进行信息校验,后台服务则由JavaServlet结合Java业务逻辑类实现。
数据库的操纵则使用Hibernate技术。
本系统是一款应用在网络上的聊天系统,所以如何实现多台终端和服务器的通信是开发本系统的核心。
系统将基于C/S模式,利用Socket套接字实现两台主机之间的通信,并使用多线程技术,解决一个服务器对应多个用户终端的问题。
为了保证系统后期的可维护和可扩展性,系统的设计过程将遵循面向对象的思想,借助于可视化建模语言UML进行分析与设计。
1.3系统结果及其地位、作用和意义
1.3.1系统结果
本系统在开发完成后,在局域网范围内,能够实现多个用户同时在线聊天。
而且此聊天室与传统的聊天室相比,界面更加友好,动态交互性更强。
由于使用Java技术和面向对象的思想进行设计和开发,系统在后期的扩展和维护过程中,更加易于操作。
在功能方面能够实现多人在线聊天,私聊以及显示当前在线用户,发布系统公告,用户注册登录等,系统具有一定的实用价值和推广价值。
1.3.2系统研究的地位、作用和意义
本系统实现了多个用户同时在线聊天,在开发技术和设计思想方面更加的规范,用户界面和操作更加的合理和人性化。
本系统的特点如下:
(1)在局域网范围内,能够实现多人在线聊天,私聊等。
(2)在聊天时,可以选择聊天的对象,表情。
(3)管理员可以对服务器信息和用户信息进行管理及发布系统公告。
(4)系统使用了多项技术:
JSP,JavaScript,Socket,多线程,Hibernate等。
(5)系统开发过程使用的是面向对象的设计过程,运用可视化建模语言UML进行系统的分析与设计工作。
完成后,系统在功能和技术方面将会具有一定的代表性,为后期开发同类系统提供借鉴。
第二章电子聊天室系统的需求描述
2.1聊天室客户端的用例描述
电子聊天室服务客户端的功能是发送聊天信息和接收消息,以及在此过程中需要的连接到服务器的功能,故描述为4个部分。
◆能连接到一个远端的聊天服务器。
◆能向远端的聊天服务器发送聊天信息。
◆能从远端服务器接收消息。
◆能断开和当前聊天服务器的连接。
从以上的功能描述,可以得到四个用例。
◆建立连接。
◆发送聊天信息。
◆接收消息。
◆断开连接。
其用例图描述,如图2.1所示。
图2.1聊天客户端的用例图
具体每个用例的描述如下:
(1)建立连接
这个用例描述了用户使用TCP/IP协议跟远端的聊天服务器建立连接的过程。
具体描述如下:
用例名称:
建立连接。
用例说明:
通过网络连接到聊天服务器。
通信协议:
使用TCP/IP协议。
先决条件:
(1)有正常的网络连接。
(2)有可用的聊天服务器。
(3)TCP/IP的相关设置正确。
预期结果:
连接到聊天服务器,并且可以发送聊天信息,接收服务器的消息。
基本过程:
(1)用户进行注册或登录,同时发出建立或连接聊天服务器的请求。
(2)连接到指定的聊天服务器。
(3)进入在线聊天室。
替代过程:
(2)连接失败,将失败信息返回给用户。
(4)提示用户重试。
(2)发送聊天信息
这个用例描述了聊友编辑聊天信息并发送到远程聊天服务器的过程。
具体描述如下:
用例名称:
发送聊天信息。
用例说明:
聊友获取远端的聊天服务器提供的服务,将本地编辑的聊天信息发送到聊天服务器。
通信协议:
使用TCP/IP协议。
先决条件:
已经连接到聊天服务器。
预期结果:
本地编辑的聊天信息成功发送到聊天服务器。
基本过程:
(1)聊友选择聊天的对象、表情、方式,填入聊天内容。
(2)聊友向远端的服务器请求发送聊天信息。
替代过程:
(2)发送聊天信息失败,提示用户失败信息。
(3)接收消息
这个用例描述了客户端从远程服务器端接收消息的过程,本过程和发送聊天信息过程相互辅助完成客户端的整个功能。
具体描述如下:
用例名称:
接收消息。
用例说明:
客户端从远程聊天服务器端接收消息,即时显示聊天信息、在线用户和系统公告信息。
通信协议:
使用TCP/IP协议。
先决条件:
(1)已经连接到远程聊天服务器端。
(2)服务器端有新的消息更新。
预期结果:
聊天室客户端即时从远程服务器端接收消息,并更新客户端页面。
基本过程:
(1)客户端每隔3秒钟访问服务器。
(2)服务器端不断收集聊天信息,并发送消息。
(3)客户端显示聊天信息、在线用户和系统公告信息。
(4)断开连接
本用例描述了用户断开与服务器连接的整个过程。
具体描述如下:
用例名称:
断开连接
用例说明:
离开当前已经连接的聊天服务器。
通信协议:
使用TCP/IP协议。
先决条件:
(1)有正常的网络连接。
(2)已经和远端的聊天服务器建立连接。
(3)TCP/IP的相关设置正确。
预期结果:
停止从聊天服务器接收消息,断开和当前服务器的连接。
基本过程:
(1)用户点击退出链接。
(2)将断开连接请求发送到聊天服务器。
(3)停止从服务器获取消息。
(4)断开和聊天服务器的连接。
替代过程:
(4)断开连接失败。
(5)提示用户失败信息。
2.2聊天室服务器端的用例描述
聊天室服务器端的功能即是被动地满足远端用户的需求,它包括:
◆获取远端用户的连接本地服务器的请求,并建立连接。
◆能响应远端用户的聊天请求,接收用户的聊天信息。
◆能响应远端用户的即时获取消息的请求,将收集的用户信息发送到所有客户端。
◆能获取远端用户断开连接的请求,停止服务器和该用户的连接。
从功能描述可以得到四个用例如下:
◆允许建立连接。
◆允许接收聊天信息。
◆允许发送用户信息。
◆允许断开连接。
用例图描述,如图2.2所示。
图2.2聊天服务器端的用例图
服务器各个用例的描述如下。
(1)允许建立连接
“允许建立连接”用例描述了聊天服务器响应用户请求并和该用户建立连接的整个过程。
本用例显然是和客户端的“建立连接”用例相对应,并且协同工作。
具体描述如下:
用例名称:
允许建立连接。
用例说明:
允许用户连接到当前的聊天服务器。
通信协议:
使用TCP/IP协议。
先决条件:
(1)有正常的网络连接。
(2)聊天服务器已经开启服务。
(3)TCP/IP的相关设置正确。
(4)远端用户提交连接请求。
预期结果:
允许用户连接到当前的聊天服务器,并且为用户提供服务。
基本过程:
(1)等待远端用户发出建立连接的请求。
(2)获取远端用户发送的连接请求。
(3)允许该用户连接到当前的聊天服务器。
替代过程
(一):
(2)若用户信息不符合设置,发送拒绝信息到远端用户。
(3)拒绝连接。
替代过程
(二):
(3)若建立连接失败,显示失败信息。
(2)允许接收聊天信息
这个用例描述了聊天服务器接收远端聊友发送的聊天信息的过程。
本用例显然是和客户端的“发送聊天信息”用例相对应,协同工作。
具体描述如下:
用例名称:
允许接收聊天信息。
用例说明:
允许接收远端聊友发送的聊天信息。
通信协议:
使用TCP/IP协议。
先决条件:
(1)已经和远端用户建立连接。
(2)远端用户请求发送聊天信息。
预期结果:
聊天服务器成功接收聊天信息。
基本过程:
(1)获得远端用户提出的发送聊天信息的请求。
(2)接收聊天信息。
(3)等待远端用户新的请求。
替代过程:
(2)若无法接收聊天信息,提示用户失败信息。
(3)允许发送用户信息
这个用例描述了服务器端响应远端用户接收消息的请求,并将收集的远端用户的聊天信息和当前在线用户以及系统公告信息发送给所有在线用户的过程。
具体描述如下:
用例名称:
允许发送用户信息。
用例说明:
响应远端用户接收用户信息的请求,并将收集的信息发送给所有在线用户。
通信协议:
使用TCP/IP协议。
先决条件:
(1)已经和远端用户建立连接。
(2)远端用户请求接收消息。
预期结果:
(1)响应用户的接收信息请求。
(2)服务器将收集的信息发送给所有在线用户。
基本过程:
(1)获得远端用户提出的接收消息的请求。
(2)将收集的所有信息封装。
(3)将已封装的信息发送到所有客户端。
(4)等待远端用户新的请求。
替代过程:
(2)若封装信息失败,提示错误信息。
(3)等待新的请求。
(4)允许断开连接
“允许断开连接”用例描述了响应远端用户断开连接的请求,停止当前提供的服务并且断开跟该用户连接的整个过程。
具体描述如下:
用例名称:
允许断开连接。
用例说明:
服务器断开和所请求用户的连接。
通信协议:
使用TCP/IP协议。
先决条件:
(1)有正常的网络连接。
(2)收到已经建立连接的远端用户的断开连接的请求。
(3)TCP/IP的相关设置正确。
预期结果:
停止对该用户提供服务,断开和该用户的连接。
基本过程:
(1)获取远端用户发出的断开连接的请求。
(2)终止对该用户提供的服务。
(3)断开和该用户建立的连接。
替代过程
(一):
(3)断开连接失败,重试。
替代过程
(二):
(2)终止服务失败,等待服务结束。
(3)断开和该用户的连接。
第三章电子聊天室系统的分析与设计
3.1聊天室客户端的分析与设计
3.1.1获取客户端对象
从上一章的用例及其描述中,分析每个活动以及其实现的功能,可以得到实现客户端应用的对象:
注册界面、登录界面、聊天界面、响应处理、发送聊天信息、接收消息和聊天服务。
它们之间的关系用对象图表示,如图3.1所示。
图3.1客户端应用的对象图
3.1.2客户端对象的动态关系
为了更加清晰地了解对象与对象之间的交互过程,下面将详细地描述对象的动态关系。
动态关系使用序列图(SequenceDiagram)来表示,下面将给出每个用例的序列图。
(1)建立连接
参考上一章“建立连接”的用例描述,登录方式建立连接的序列图如图3.2所示。
图3.2登录建立连接的序列图
该序列图通过对象之间的交互,描述了它们之间的动态关系如下:
在整个应用的开始时,程序尚未启动,此时,只有“用户”对象。
“用户”对象填写“登录信息”给“登录页面”对象,并开始后者的生存周期。
“登录页面”对象发送“登录信息”和“请求连接”的消息给“响应处理”对象,并开始后者的生存周期。
“响应处理”对象发送“连接”消息给“聊天服务”对象,并开始后者的生存周期。
“聊天服务”对象向“接收消息”对象发送“启动”消息,同时向“聊天界面”对象发送“连接建立”消息,开始“接收消息”对象和“聊天界面”对象的生存周期。
“聊天界面”对象通知用户可以聊天。
(2)发送聊天信息
参考“发送聊天信息”的用例描述,对应的序列图如图3.3所示。
图3.3发送聊天信息用例的序列图
该序列图通过对象之间的交互,描述了它们之间的动态关系如下:
“用户”对象发送“信息”和“请求发送”的消息给“聊天界面”,并开始后者的生存周期。
“聊天界面”对象发送“聊天信息”的消息给“响应处理”对象,并开始后者的生存周期。
“响应处理”对象发送“原始信息”给“发送聊天信息”对象,并开始后者的生存周期。
“发送聊天信息”对象发送“数据包”给“聊天服务”,并开始后者的生存周期。
“聊天服务”对象发送“信息已发送”的消息给“聊天界面”,并开始后者的生存周期。
“聊天界面”对象发送“发送成功”的消息给“用户”。
(3)接收消息
“接收消息”用例没有明显的发起者,在连接建立的整个过程中一直作用,其序列图如图3.4所示。
图3.4接收消息用例的序列图
该序列图通过对象之间的交互,描述了它们之间的动态关系如下:
“聊天服务”对象发送“数据包”给“接收消息”对象,并开始后者的生存周期。
“接收消息”对象发送“用户信息”和“聊天信息”给“聊天界面”,并开始后者的生存周期。
“聊天界面”对象将“用户信息”和“聊天信息”显示给用户。
(4)断开连接
参考“断开连接”的用例描述,对应的序列图如图3.5所示。
图3.5断开连接用例的序列图
该序列图通过对象之间的交互,描述了它们之间的动态关系如下:
“用户”对象发送“请求退出”的消息给“聊天界面”对象,并开始后者的生存周期。
“聊天界面”对象发送“请求断开连接”的消息给“响应处理”对象,并开始后者的生存周期。
“响应处理”对象发送“断开连接”的消息给“聊天服务”对象,并开始后者的生存周期。
“聊天服务”对象发送“成功断开连接”的消息给“聊天界面”对象,并结束自身的生存周期。
“聊天界面”对象发送“已退出”的消息给用户。
至此已完整地描述了所获取的客户端对象及对象之间的动态关系。
接下来将对客户端的类进行详细的设计。
3.1.3客户端界面与类的设计
聊天室的客户端包括6个主要的JSP页面和4个Java文件。
从功能上说,Java文件主要用来进行业务逻辑的处理以及和服务器端进行通信。
而JSP文件则是为了显示前台页面。
各个文件的功能如表3.1所示。
表3.1客户端文件功能列表
文件名
功能描述
/login.jsp
用户登录页面
/register.jsp
用户注册页面
/index.jsp
聊天室首页
/Input.jsp
输入聊天信息页面
/Show.jsp
显示聊天信息页面
/UserList.jsp
显示用户列表页面
LoginServlet.java
处理用户登录信息并将信息发送至远程服务器
RegisterServlet.java
处理用户注册信息并将信息发送至远程服务器
ChatRoomServlet.java
处理聊天信息并将信息发送至远程服务器
ChatRoomServer.java
接收消息
下面选取ChatRoomServer.java和ChatRoomServlet.java进行详细的类设计。
对应的类图如3.6图,图3.7所示。
图3.6ChatRoomServer类的类图图3.7ChatRoomServlet类的类图
LoginServlet.java类和RegisterServlet类的类图与ChatRoomServlet类的类图相类似,此处不再描述。
至此,客户端的类结构已经非常清晰,接下来需要对聊天室服务器端进行分析和设计。
3.2聊天室服务器端的分析与设计
3.2.1获取服务器端的对象
服务器端使用“提供聊天服务”对象来实现“允许接收聊天信息”和“允许发送用户信息”两个用例的功能。
该对象包括:
连接服务、允许建立连接、提供聊天服务和允许断开连接4部分,其对象图,如图3.8所示。
图3.8服务器端应用的对象图
获取服务器端对象后,接下来进一步明确各对象之间的动态关系。
3.2.2服务器端对象的动态关系
本节中对每个用例建立了一个序列图,来详细描述各个对象之间的动态关系。
(1)允许建立连接
“允许建立连接”用例的序