基于web的聊天室构建_第1页
基于web的聊天室构建_第2页
基于web的聊天室构建_第3页
基于web的聊天室构建_第4页
基于web的聊天室构建_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

基于WEB的聊天室构建摘要WEB聊天室曾在因特网进入中国早期的时候被广泛使用,一度深受国内网民的青睐。随着腾讯QQ以及之后微信的普及,目前WEB聊天室已然较少被使用。但在一些商业网站,例如BBS以及在线购物系统,还是会有WEB聊天室的存在。基于WEB聊天室自身的优点,即不需要安装任何客户端应用,聊天内容呈现便捷。所以,WEB聊天室将长期存在于因特网上。该聊天室系统由用户注册、用户登录、聊天室的选择、主聊天室以及相应修改、帮助功能组成。使用JAVA编程语言集合JSP、JAVABEAN、SERVLET技术完成系统的整体设计,以MYECLIPSE为平台,TOMCAT为服务器。关键字WEB因特网聊天室JSPJAVABEANSERVLETWEBBASEDCHATROOMTOBUILDABSTRACTWEBCHATROOMSTOENTERCHINAINTHEEARLYSTAGESOFTHEINTERNETISWIDELYUSEDANDLOVEDBYNETIZENSWITHTHEPOPULARITYOFTENCENTQQANDWECHAT,THECURRENTWEBCHATROOMSHAVEBEENUSEDLESSHOWEVER,INSOMESITES,SUCHASBBS,ONLINESHOPPINGSYSTEMS,BUTALSOMAYHAVEWEBCHATROOMSBECAUSETHEWEBCHATROOMSALSOHASITSMERITS,ITDOESNOTNEEDTOINSTALLANYCLIENT,ANDSHOWMESSAGEVERYQUICKLYTHEREFORE,WEBCHATROOMSWILLALWAYSAPPEARONTHEINTERNETTHECHATROOMMAKESUPWITHUSERSREGISTRATIONSYSTEM,USERSLOGON,CHATROOMSTOCHOOSE,THEMAINCHATROOM,SOMECHANGESANDTHECOMPOSITIONOFFUNCTIONSUSINGJAVAPROGRAMMINGLANGUAGEANDCOLLECTWITHJSP,JAVABEAN,SERVLETTECHNOLOGYTOCOMPLETETHEOVERALLDESIGNOFTHESYSTEM,USINGMYECLIPSEASAPLATFORMANDTOMCATASASERVERKEYWORDWEBINTERNETCHATROOMJSPJAVABEANSERVLET目录摘要IABSTRACTII1概述111聊天室系统的基本概念112开发聊天室系统的意义113目前的研究现状114总体设计的基本思路12主要技术321JSP技术322JAVABEAN技术423SERVLET技术424MYECLIPSE开发工具625ACCESS数据库技术626TOMCAT应用服务器技术63系统分析831系统设计的目的和意义832系统功能84系统设计941系统总体设计942系统数据库设计14421数据库14422基本表的设计155功能实现1751用户注册与登录功能17511用户注册17512用户登录1952用户选择聊天房间功能20521用户登录时选择聊天室房间20522用户聊天时更改聊天室房间2153用户聊天功能22531显示功能22532用户信息修改功能23533处理功能25534输入功能26535查看在线聊友功能28536私聊功能(悄悄话)29537趣味聊天功能3054高级用户管理功能31541高级功能(踢人禁言)3155共享文件功能35551上传功能35552下载功能3856音乐播放功能41561音乐播放功能416系统测试4561测试主要内容4562测试详情457总结与展望4671对存在问题的处理46711边框的处理46712登录页面中的验证码问题46713其他问题4672心得体会47致谢49参考文献50附录(外文原文及翻译)511概述11聊天室系统的基本概念聊天室系统基于互联网,可进行多人通讯。本系统旨在让用户在进入该聊天室系统平台的同时,可以借由网络在线与相距较远的其他一位或多位用户进行通讯交互。通过利用计算机通讯原理,并且基于一定的网络通讯技术及高级语言程序设计和JSP应用程序设计的技术基础,以一个聊天室平台形式,为用户提供交互服务。12开发聊天室系统的意义上帝赋予人类说话的能力,而说话又创造了人类对宇宙的量度思想。1随着信息科技的高速发展,我们用于进行信息交互的方式也日益丰富,创新。从早期的电报,有线电话,而后的传真,移动电话,电子邮件,然而对于越来越快节奏,信息交流越来越频繁的当今社会,如果需要与几个人同时进行会谈依然是一件需要费时费力进行安排的活动,尤其是对于以上的几种交流方式,要么具有局限性,要么有费用的问题,其中电话就是属于费用比较高的一种选择,而且通常情况下不支持进行多人互动,限于单对单的通话。通常的选择是把参与会谈的人越好时间,聚集到同一个房间才能进行有效的交流。不但费时费力而且往往有诸多因素会影响大家的日程安排。电子邮件则是非即时的联系方式,用于交互则需要一定的时间,只能作为一种辅助交流的选择。在这种情况下,聊天室系统应运而生,很好的满足了多人会谈的需求,在网络上虚拟一个交流平台,这样在不同的地点也可以进行方便的交流。而且优秀的聊天室还具备诸多表情符号供用户选择用以加强思想感情的传递。而且基于广泛应用的互联网,费用低廉,信息即时交流,参与方便的优点,在这个快节奏的社会中不仅加强联系,同时节省交互的成本进而创造出更多的价值13目前的研究现状随着IT技术的迅猛发展,网络以其日新月异的创新精神以及无处不在的便捷性,吸引了越来越多的人的注意并参与其中,信息资源的重要性以前所未有的形式摆在了社会的焦点位置,信息交互的经济效益直接体现在生产管理活动中。对于一个组织尤其是商业公司,必须能利用信息资源的及时性、准确性,提高工作效率,取得更大的经济效益和社会影响。对于个人而言,也可以通过信息交互的便捷更好地实现个人价值。方方面面的实际需求表明,一个良好的交互通讯的方式,能从一个较高的程度上提升工作效率,避免由于不必要的时间成本而承担可能的种种损失。准确的说一个良好的聊天室系统应能全面的处理这个问题。在经过了近些年来认识及技术的发展,聊天室系统已然趋于成熟。14总体设计的基本思路针对所学知识以及对WEB应用系统的了解,根据用户在实际聊天中的需求,确定开发以JAVAWEB技术为主的一个在线聊天室系统。主要满足用户对群聊,私聊等功能的需要。基于MYECLIPSE平台,通过JAVA编程语言、ACCESS数据库技术进行开发,初步涉及了框架的思想以及对JAVABEAN的运用。本系统的开发工作分为以下几个主要阶段1系统需求分析。包括用户需求分析,系统调查。2系统的功能设计。3数据库的设计。ER图、创建数据表。4系统的功能模块的划分以及实现。根据系统所管理的数据的类别不同,对数据操作进行功能划分,分别实现功能模块。系统的测试。单元测试,以及将单个实现的功能整合为一体,进行整体性能测试。对存在的错误和不足,予以及时的修正。2主要技术21JSP技术本系统基于JSP技术。JSP的全称是JAVASERVERPAGES,它是在SUNMICROSYSTEMS公司所发起、众多公司共同参与建立的一种新的动态网页技术的标准。将JAVA的代码片段SCRIPTLET和JSP的标记TAG在静态的网页HTML文件HTM,HTML中规范的加入,即构成了动态的JSP网页JSP。JSP技术的特点如下1将页面内容的生成同页面内容呈现予以人为分离2生成了可复用的软件组件3应用了标记从而简化了页面的设计JSP九中内置对象1PAGE对象PAGE对象代表JSP页面本身,更准确的说它代表JSP被翻译后的SERVLET。2PAGECONTEXT对象JAVAXSERVLETJSPPAGECONTEXT接口,提供了对JSP页面内使用到的所有对象及名字空间的访问,提供了几种对页面属性的访问,允许向其他应用组件转发。3REQUEST对象REQUEST对象是HTTPSERVLETREQUEST接口的实现类,封装了客户的请求信息,REQUEST的生命周期由JSP容器控制,当接收到一个客户端请求,JSP容器创建并封装REQUEST对象,当请求处理完毕,REQUEST对象被销毁。4RESPONSERESPONSE对象封装了服务器响应客户端请求的相关消息,主要功能设置头信息,实现了JAVAXSERVLETHTTPHTTPSERVLETRESPONSE接口,生命周期由容器来管理。5SESSION处理客户端与服务端的会话,从客户端连接到服务端开始,SESSION对象用来保存每个用户的信息,以便跟踪每个用户的操作状态,其中,SESSION信息保存在容器里,SESSION的ID保存在客户机的COOKIE中,用户首次登陆系统时容器会给用户分配一个唯一的SESSIONID标识。用于区别其他的用户。6APPLICATION保存WEB应用程序中共有的数据,可存放全局变量服务器启动后自动创建APPLICATION对象,该对象一直有效,直到服务器关闭。用户对该对象属性的操作将影响到其他用户7CONFIGCONFIG对象是JSP页面通过JSP容器进行初始化时被传递的对象,封装了JSP配置参数的信息可读取WEBXML中配置的初始化参数8OUTOUT对象用来向客户端输出内容,并管理服务器上输出缓冲区OUT对象被封装成JAVAXSERVLETJSPJSPWRITER接口。可以使用PAGE指令来改变缓冲区大小9EXCEPTIONEXCEPTION对象实现了JAVALANGTHROWABLE接口,用来处理JSP在执行时发生的。JSP的生命周期1翻译阶段当容器接受到客户端第一次对JSP的请求后,先判断被请求的JSP是否存在,若不存在返回404错误,若存在,将该JSP先翻译成一个SERVLET。2编译阶段将SERVLET的源文件编译成一个字节码文件,然后由容器将其装载进虚拟机并实例化单例。3执行阶段调用SERVLET的INIT、SERVICE方法、DESTROY。22JAVABEAN技术JAVABEAN是指一个可复用的软件组件。从本质上来说JAVABEAN是一种特殊的JAVA类,它经过对相关某一逻辑的属性和方法的封装使其成为具有实现某一特定的功能或者可执行某一特别业务的对象,简称为BEAN。JAVABEAN具有JAVA系列一贯的跨平台的优势,以及以下特点1实现了对代码的可重复的利用;2容易编写、方便使用、方便维护;3可以一次编译后在任何安装了JAVA运行环境的平台上的使用。JAVABEAN存在下面四种应用范围对话范围、页面范围、请求范围、应用范围。1对话范围SESSION对话范围的JAVABEAN主要用于跨多个页面和时间段的信息的处理如在表单中填写的用户信息等。2页面/请求范围PAGE/REQUEST页面和请求范围的JAVABEAN类似于记录表单信息的BEAN,这是因为一般情况下它们用于对表单的处理。3应用APPLICATION应用范围一般主要是应用在服务器的构件上。例如JDBC连接池、应用的监视、某类用户的计数和其他参与用户行为的类。使用JAVABEAN的目的1用来封装数据信息,业务,数据访问,事务控制逻辑的代码2用来封装JSP中的一些脚本,便于重用,可以减少JSP中脚本的使用3作为一个可重用的组件来使用JAVABEAN按照位置分为可视化JAVABEAN位于客户端EG在SWING中处理事件的JAVABEAN和不可视化JAVABEAN位于服务端,用于封装数据信息,业务,数据23SERVLET技术SERVLET本质是用JAVA语言编写的程序,具有独立于平台和协议的特点,并且是在服务器端运行的JAVA应用程序,借助于SERVLET可以生成具有动态效果的WEB页面。SERVLET负责WEB浏览器或者其他的HTTP客户程序发出的请求,是位于服务器的应用程序之间的或者应用程序与数据库之间的中间层。SERVLET是供用户扩展的组件,能够运行在SERVLET容器中。SERVLET容器负责接收WEB客户的HTTP请求并且向WEB客户发送HTTP响应。2SERVLET原先是指位于服务器上的运行的JAVA语言的小程序。它是创造于JAVAAPPLET的环境下的一个词。APPLET是只在WEB浏览器中运行的小程序。APPLET是作为网页的一部分被自动下载的(就像网页中的图片被自动下载一样)。当APPLET被激活时,它便开始执行程序。这正是它的优雅之处。3这里的想法很简单用户从INTERNET下载JAVA字节码,并在自己的机器上运行。在网页中运行JAVA程序成为APPLET。为了使用APPLET,需要启用JAVA的WEB浏览器执行字节码。用户下载一个APPLET就如同在网页中嵌入一幅图片。APPLET成为了页面的一部分。4通常情况下,它为用户提供运算服务或者根据用户交互作用定位图形的服务等等。服务器上需要有一些具有特定功能的程序,通常的时候它们实现了根据用户的输入信息来访问数据库的功能。而实现这些功能一般是利用了公共网关接口(CGI)应用程序。鉴于JAVA程序的优势,如果在服务器上运行的这类应用程序使用JAVA编程语言实现,会得到更好地响应速度。尤其是在访问量较大的服务器上,JAVASERVLET由于把各个用户访问请求激活成了单独的程序进程中的一个线程来响应,这使得各个访问请求所占用的系统资源相对减少,从而在执行的速度上超越了CGI程序的执行速度。具有更好的用户体验。SERVLET的生命周期1装载并实例化SERVLET同一个SERVLET在整个生命周期中只有一个实例。分为两种装载方式1延迟加载(TOMCAT默认的加载方式)当客户端发起第一个请求第一次访问SERVLET时,容器会将SERVLET装载进虚拟机并实例化,第二次以后去访问同一个SERVLET容器就不会再装载并实例化。2预先加载当WEBSERVER启动时,WEB容器加载WEB应用时把SERVLET装载进虚拟机并实例化。这种方式需要在WEBXML中进行配置NUMNUM0采用预先加载值越小越先被加载NUM“OUTPRINTLN“OUTPRINTLN“该用户已经存在,请重新注册“OUTPRINTLN“512用户登录用户登录功能,如同用户注册功能的实现借助了JSP,JAVABEAN以及SERVLET等技术的集合。在用户注册功能中,对于注册成功的情况,立即将输入的用户信息记录进数据库内。在用户登录功能中,对于输入的用户信息与数据库中记录的信息作匹配判断,匹配结果为TRUE的跳转到登录成功后选择聊天室的页面。其功能实现的代码类似于用户注册功能的实现。具体实现如下图所示图53用户登录页面图54用户登录成功页面52用户选择聊天房间功能521用户登录时选择聊天室房间用户登录成功后页面跳转到选择聊天室的房间的页面。页面上显示聊天室中的已有的房间,供用户自主选择喜欢的聊天房间。在用户登录成功并在聊天房间选择页面选择聊天房间点击进入聊天室后,用户名、用户的积分以及所选择的聊天室房间信息自动添加进USER_LIST表中,而表中的在线用户的信息只有在用户注销或被高级用户踢出后,相应的用户信息才会从USER_LIST中删除。该部分主要的功能实现图如下所示图55聊天室选择页面主要实现代码为PRIVATESTRINGCHATROOMPUBLICSTRINGGETCHATROOMRETURNCHATROOMPUBLICVOIDSETCHATROOMSTRINGCHATROOMTHISCHATROOMCHATROOMSTMTEXECUTEUPDATE“INSERTINTOUSER_LISTVALUES“USERNAME“,“CHATROOM“,“INTEGRAL“VALIDTRUECHOOSEBEANCBNEWCHOOSEBEANCBSETUSERNAMEREQUESTGETPARAMETER“USERNAME“CBSETCHATROOMREQUESTGETPARAMETER“CHATROOM“CHOOSECHECKBEANCCBNEWCHOOSECHECKBEANCBIFCCBVALIDATEGOTOPAGE“MAINJSP“,REQUEST,RESPONSE用户的相关信息是在经由JAVABEAN处理过程中被添进相应的数据库中表的。522用户聊天时更改聊天室房间用户聊天时,主页面右侧有休闲娱乐一栏。该栏有一下拉框,供用户自主选择喜欢的聊天房间。在用户选择好聊天室房间后点击换个房间后,用户名、用户的积分以及所选择的聊天室房间信息自动更新进USER_LIST表中。该部分主要的功能实现图如下所示图56更换聊天室房间之前图图57更换聊天室房间之后图53用户聊天功能本系统的主页面基于框架技术实现。需要支持框架的浏览器进行浏览访问。在主页面中,集成显示的页面(SHOWJSP)、输入的页面(INPUTJSP)、处理的页面(TRANSACTJSP)以及用户信息修改的页面(RIGHTJSP)。531显示功能显示页面中实现了用户发言的显示功能,同时可以对过去一段一部分聊天记录的查看,系统的相关提示信息也在这里显示。其实现功能图如下所示图58显示聊天内容功能图主要实现代码为FUNCTIONGETDATAURLURL“CLASS_METHODJSPACTIONTRANSACTJSP“TRYDATALOADSRCURLCATCHERETURNFALSEVARTIMEOUTIDSETTIMEOUT“GETDATA“,2000数据载入中532用户信息修改功能首先将用户所在的聊天室信息显示在用户信息修改页面,用户在聊天过程中就可以方便的对用户资料、密码等信息进行修改还可以更换聊天室的房间。这些功能的实现主要是通过对相关页面的超链解来实现。更换房间操作的功能的实现是借助表单将更新后的信息封装发送给相应的JAVABEAN来处理的。修改用户资料的功能的实现借助SESSION保存用户名将信息传递过去,达到修改年龄和邮箱的目的。在对用户资料在修改时按照要求对输入信息进行验证,主要是通过JAVABEAN比对数据库中的记录信息,当用户名为指定用户名且问题的答案正确时才进行修改即修改成功的提示,否则会提示拒绝修改信息。用户密码修改功能的实现同样借助SESSION保存用户名从而传递用户名,在JAVABEAN中查看数据库中输入的用户名的旧密码是否匹配一致,若匹配无误才会进行接下来的更新操作即更新旧密码为输入的新密码。匹配不一致则拒绝修改操作,相应的提示修改失败的信息。相关的功能实现图如下图59用户修改链接图图510用户资料修改图图511用户密码修改图533处理功能处理页面为了获得最新的用户聊天的信息,设定为两秒钟就更新一次,及时地显示聊天信息在显示区域内,实现便捷的交流,使得用户之间几乎无阻碍的通畅交互,便于交谈中的跟进与回复。主要实现代码为处理页面通过创建一个VECTOR数组,在数组中存放经由输入页面而成功的存放进入APPLICATION中的有关用户输入的和选择的一些操作,根据这些元素构建形成完整的发出的消息内容(比如是一些表情的选择或者用户是对其他人发言还是其他人对用户发言以及有没有动作的添加或者建立“悄悄话“的私聊模式)。这里主要通过把相应的字符串组合在一起从而得到结果。之后把最终的结果借助JAVASCRIPT中的WRITE方法将发言的内容在显示页面中显示出来。主要实现为PARENTMAINFRAMEDOCUMENTWRITE“534输入功能输入页面中,借助于在SESISON中保存的请求中的用户名。聊天对象的选择,是指聊天对象以一个输入文本框的形式,提供给用户自主输入选择聊天对象的功能。通过聊天对象的选择可给其他用户(或者离开或者被踢出)留言,留言的内容会被保存在APPLICATION中。留言的内容在留言对象下次登录的时候会被显示到显示页面,从而可以达到保持联系的目的。默认设置为在服务器重启之后才会清空APPLICATION中保存的留言信息。通过这样的设置方便了用户的聊天方式。对于聊天室中可以加入发言的一些动作,默认是固定的,也就是说在聊天室被创建好之后就已然具有这些动作,对于用户而言直接就可以选择需要的用于发言所需要的相关的表达动作。“悄悄话”选框,一旦勾选了这个选框意味着可以进入私下聊天的模式,也就是说自己的发言只有自己选择的私聊的对象的显示去也才可以显示,而其他人的显示去也是不显示的。积分的概念,本系统中的积分是借助SESSION保存的。发送的按钮,通过点击该按钮,用户所输入的一系列的发言信息就会被系统自动添加到MESSAGE中传递给处理页面进行处理。离开的按钮,通过点击该按钮,用户的保存在SESSION的相关信息就会被清空,与此同时也会把USER_LIST表中的与用户相关的信息清空。这一功能的实现图如下所示图512用户输入功能图该页面的一些主要的功能的实现代码为IFFIRSTNULLTALKMESSAGE“系统公告“USERNAME“进入了“CHATROOM“聊天室,大家欢迎“ACTION“NO“SYSTEMSPEAK“YES“SYNCHRONIZEDAPPLICATIONMESSAGEVECTORAPPLICATIONGETATTRIBUTE“MESSAGE“IFMESSAGENULLMESSAGENEWVECTOR30,10IFMESSAGESIZE200MESSAGEREMOVEALLELEMENTSMESSAGEADDELEMENTALONETALKMESSAGEADDELEMENTUSERNAMEMESSAGEADDELEMENTTALKWITHMESSAGEADDELEMENTTALKMESSAGEMESSAGEADDELEMENTSYSTEMSPEAKMESSAGEADDELEMENTACTION2APPLICATIONSETATTRIBUTE“MESSAGE“,MESSAGE535查看在线聊友功能用户在聊天过程中,即可在右侧的休闲娱乐一栏里,选择查看在线聊友链接,查看当前在线的聊友以及其所在的聊天室。相关的功能实现图如下图513用户查看在线聊友图该页面的一些主要的功能的实现代码为STRINGSTRSQL“SELECTFROMUSER_LIST“RESULTSETRSDBEXECUTEQUERYSTRSQLINTI0WHILERSNEXTSTRINGSTR_CHATROOMRSGETSTRING“CHATROOM“STRINGSTR_USERNAMERSGETSTRING“USERNAME“STRINGSTR_INTEGRALRSGETSTRING“INTEGRAL“IIF“XIUXIAN“EQUALSSTR_CHATROOMOUTPRINTLN“休闲娱乐“ELSEIF“YUANFEN“EQUALSSTR_CHATROOMOUTPRINTLN“缘分天空“ELSEIF“TANTIAN“EQUALSSTR_CHATROOMOUTPRINTLN“谈天说地“RSCLOSE536私聊功能(悄悄话)用户通过勾选输入面板上的悄悄话选项,在前面的输入文本中输入私聊的对象就可以与感兴趣的聊友进行私聊。相关的功能实现图如下图514用户私聊图该功能的实现代码为STRINGALONETALKREQUESTGETPARAMETER“ALONETALK“IFALONETALKNULLALONETALK“NO“IF“NO“EQUALSALONETALKVECTORMESSAGENULLSYNCHRONIZEDAPPLICATIONMESSAGEVECTORAPPLICATIONGETATTRIBUTE“MESSAGE“IFMESSAGENULLMESSAGENEWVECTOR30,10IFMESSAGESIZE200MESSAGEREMOVEALLELEMENTSMESSAGEADDELEMENTALONETALKMESSAGEADDELEMENTUSERNAMEMESSAGEADDELEMENTTALKWITHMESSAGEADDELEMENTTALKMESSAGEMESSAGEADDELEMENTSYSTEMSPEAKMESSAGEADDELEMENTACTION2APPLICATIONSETATTRIBUTE“MESSAGE“,MESSAGE537趣味聊天功能用户通过选择输入页面的动作下拉框,即可在发言时自动带上相应的表情式语言。借此可以丰富聊天是趣味性。相关功能的实现图如下图515用户趣味聊天图该功能的主要实现代码为SIZE“8“STYLE“FONTSIZE9PT“动作说话问好点头妩媚开朗坏笑苦笑白眼轻吻拥抱深情伤心害羞愤怒招手不满兴奋狂吻委屈着急嚎啕撒娇奸笑飞脚抽掴假笑STRINGACTION2“INTIACTIONINDEXOF“B“IFI1ACTIONACTIONSUBSTRING0,ITALKWITHACTIONSUBSTRINGI1IFACTIONEQUALS“NO“TALKMESSAGEACTIONTALKMESSAGEACTION2“YES“ELSEIFFIRSTNULLTALKMESSAGETALKMESSAGEACTION2“NO“MESSAGEADDELEMENTACTION254高级用户管理功能541高级功能(踢人禁言)用户通过点击在输入页面的超链接“高级功能“进入高级用户踢人的界面,选择当前在线的一个用户执行踢人操作,该操作只有在当前用户积分超过1000分时才有效,并且会减少该用户50分,被踢用户将无法发言。该功能用于实现对用户的管理功能,积分的累积按日计算,每天增加2分,同日多次重复登录不予积分。被提出的用户即使重新登录也无法发言,只能看到别人对他的留言与公众的交流发言。该功能的实现图如下图516用户高级功能图图517用户高级功能成功图图518用户被踢图图519被踢用户禁言图该功能的实现代码为IFRSNEXTSTRINGINTEGRALRSGETSTRING“INTEGRAL“INTTEMPINTEGERPARSEINTINTEGRALIFTEMP1000TEMPTEMP50S“TEMPSQL“UPDATEUSERSETINTEGRAL“S“WHEREUSERNAME“USERNAME“DBEXECUTEUPDATESQLSYNCHRONIZEDAPPLICATIONSQL“DELETEFROMUSER_LISTWHEREUSERNAME“KICKNAME“DBEXECUTEUPDATESQLSYNCHRONIZEDAPPLICATIONVECTOROUTMESSAGENULLOUTMESSAGEVECTORAPPLICATIONGETATTRIBUTE“MESSAGE“IFOUTMESSAGENULLOUTMESSAGENEWVECTOR30,10STRINGOUTSTR“系统公告“KICKNAME“被踢出聊天室“STRINGSTR1“NO“STRINGSYSTEMSPEAK“YES“OUTMESSAGEADDELEMENTSTR1OUTMESSAGEADDELEMENTUSERNAMEOUTMESSAGEADDELEMENTSTR1OUTMESSAGEADDELEMENTOUTSTROUTMESSAGEADDELEMENTSYSTEMSPEAKOUTMESSAGEADDELEMENTSTR1APPLICATIONSETATTRIBUTE“MESSAGE“,OUTMESSAGEDBFREERSRSOUTPRINT“ALERT该用户已经被踢出“OUTPRINT“WINDOWLOCATIONADVANCEJSP“ELSEDBFREERSRSOUTPRINT“ALERT只有积分大于1000分的用户才能踢人“OUTPRINT“WINDOWLOCATIONADVANCEJSP“ELSEOUTPRINT“ALERT只有注册用户且积分大于1000才能踢人“OUTPRINT“WINDOWLOCATIONADVANCEJSP“STRINGKICKNAMESTRINGAPPLICATIONGETATTRIBUTE“KICKNAME“WHILEUSERNAMEEQUALSKICKNAMEOUTPRINT“ALERT你已经被踢出,不要再捣乱啦“RETURN55共享文件功能551上传功能用户通过点击右侧功能区的上传文件,即可转到上传文件的页面,在该页面下,用户可以上传一些需要与大家分享的文件,格式多样,文本,歌曲,或者其他资料。相关功能的实现图如下图520上传文件链接图图521上传文件页面图图522上传文件成功图相关功能的主要实现代码上传文件“OUTPRINT“REQUESTGETSERVLETPATH“REQUESTGETSERVLETPATH“/取得JSP文件相对于根地址的地址STRINGREALPATHREQUESTGETREALPATHSERVERNAME/取得互联网程序的绝对地址OUTPRINTLN“REQUESTGETREALPATHSERVERNAME“REALPATH“REALPATHREALPATHSUBSTRING0,REALPATHLASTINDEXOF“OUTPRINT“REALPATH“REALPATH“ROOTPATHREALPATH“UPLOAD“/创建文件的保存目录OUTPRINTLN“文件的保存目录“ROOTPATHSTRINGCONTENTTYPEREQUESTGETCONTENTTYPE/取得客户端上传的数据类型OUTPRINTLN“客户端上传的数据类型“CONTENTTYPE“TRYIFCONTENTTYPEINDEXOF“MULTIPART/FORMDATA“0INNEWDATAINPUTSTREAMREQUESTGETINPUTSTREAM/读入上传的数据INTFORMDATALENGTHREQUESTGETCONTENTLENGTHIFFORMDATALENGTHMAX_SIZEOUTPRINTLN“上传的文件字节数不可以超过“MAX_SIZE“RETURNBYTEDATABYTESNEWBYTEFORMDATALENGTH/保存上传文件的数据INTBYTEREAD0INTTOTALBYTESREAD0WHILETOTALBYTESREAD“SAVEFILE“文件已经存在“/检查上传文件的目录是否存在FILEFILEDIRNEWFILEROOTPATHIFFILEDIREXISTSFILEDIRMKDIRSFILEOUTNEWFILEOUTPUTSTREAMFILENAME/创建文件的写出类FILEOUTWRITEDATABYTES,STARTPOS,ENDPOSSTARTPOS/保存文件的数据FILEOUTCLOSEOUTPRINTLN“SAVEFILE“文件成功上传“OUTPRINTLN“关闭窗口“ELSESTRINGCONTENTREQUESTGETCONTENTTYPEOUTPRINTLN“上传的数据类型不是MULTIPART/FORMDATA“CATCHEXCEPTIONEXTHROWNEWSERVLETEXCEPTIONEXGETMESSAGE552下载功能用户通过点击右侧功能区的下载文件,即可转到下载文件的页面,在该页面下,用户可以查看当前服务器上的一些要与大家分享的文件,点击相应的文件后的下载即可将该文件下载到本地。相关功能的实现图如下图523下载文件链接图图524下载文件页面图图525下载文件成功图相关功能的主要实现代码请选择要下载的文件“SS“56音乐播放功能561音乐播放功能聊天之余可以选择听一听音乐,点击右侧功能区音乐播放器即可转到音乐播放页面,点击播放按钮即可播放相应的歌曲。可以选择单一的歌曲循环播放,也可以选择播放列表,播放列表中有多首歌曲供选择播放。相应的功能实现图如下图526音乐播放链接图图527音乐播放页面图图528音乐播放图相关功能实现的主要代码风吹麦浪春暖花开列表播放6系统测试61测试主要内容对系统测试主要包括一下内容(1)功能测试聊天测试、私聊测试、数据库测试、高级功能测试,共享功能测试,音乐功能测试,表单测试,数据库测试;(2)可用性测试链接测试、响应速度测试、信息正确测试、整体框架测试;(3)兼容性测试浏览器平台测试;(4)稳定性测试。负荷测试;(5)安全性测试。链接跳转;62测试详情(1)功能测试经过一系列的测试,WEB聊天室系统所有功能均按要求实现,需要链接的相关页面均准确转到。对表单内容进行提交的测试,表单中输入的信息错误或者信息格式错误时,系统会提示报错并返回相应页面,从而进一步确保了提交操作后的信息的正确性和完整性,服务器能够接收到正确的信息进行处理;通过用户注册登录,在线人数的查看功能以及高级功能中的踢人操作等操作对数据库记录的访问存储进行了全面的测试,测试显示数据库访问运转正常。(2)可用性测试本系统的诸多链接均可转到相应的页面,所有链接均有效;响应速度随着聊天室人数规模的上升而呈下降趋势,小规模的会谈交流完全正常;通过对信息的正确输入,均得到了正常的信息返回,且返回信息正确;系统整体界面布局采用框架技术合理布置,颜色简单,用户体验简洁,容易上手,可用性良好。(3)兼容性测试本系统在安装了WINDOWS系统的客户端上进行了多浏览器的测试,测试显示系统正常运行;在IE系列的版本测试中支持框架的均正常运行,在谷歌、火狐、360浏览器、QQ浏览器、SAFARI等浏览器下均正常运行。所以JSP在线聊天室系统对WINDOWS系统上的诸多浏览器的兼容性较好。(4)稳定性测试本系统在模拟小规模多人进行聊天的情况下运行状况良好,各项功能正常,所有连接均正常转到。该系统的稳定性良好。(5)安全测试本聊天室系统的主要页面均采取了先验证,后执行相应功能的方式,进行了信息输入的测试,将数据库内有记录的有效用户名和密码以及数据库内没有注册的无效的用户名和密码测试,测试到必须正确登录才可以进行正常的聊天室的诸多功能操作,同时进行了直接输入连接进行跳转功能的测试,测试结果显示为必须按照正常的流程才能进行正常的聊天室功能,任何异常的跳转均无效操作,该聊天室系统安全性良好。7总结与展望71对存在问题的处理711边框的处理FRAMESET是HTML中用于组织以及嵌套框架的元素,通过FRAMESET可以方便的确定一个框架集而其本身可作为FRAME元素的一个容器。在HTML文档同时包含FRAMESET元素和BODY元素是不被允许的,只有一个是被允许的。FRAME中的SCROLLING属性当显示页面的内容超过框架内设置的大小时,部分内容将会被隐藏,这时可以借助于滚动条的滚动效果方便用户在显示区内看到完整的内容,通过SCROLLING属性设置。实现代码为,当VALUE的取值设定为YES即打开滚动条显示;NO,则关闭滚动条显示;AUTO,则意味着可以依据当前的页面长度当页面内容超过页面长度的时候自动显示出滚动条,本聊天室系统设置该属性值为AUTO。712登录页面中的验证码问题登录页面中,有验证码验证机制。这意味着用户不仅要输入正确的用户名、密码,在这都正确输入之后还必须将验证码及时的正确输入。验证码的生成是在IMAGEJSP页面中来完成的,该页面包含在登录页面之中。即,这种方式存在一定的问题。由于之前我们在登录的页面中把输入流打开了,现在又要再次开启(在IMAGEJSP页面中)。这样会导致JAVALANGILLEGALSTATEEXCEPTIONGETOUTPUTSTREAMHASALREADYBEENCALLEDFORTHISRESPONSE异常被抛出。对于该异常的抛出问题,可以通过在IMAGEJSP之中提前关闭输入流的方法来解决。具体需添加如下的代码OUTPUTSTREAMOSRESPONSEGETOUTPUTSTREAMIMAGEIOWRITEIMAGE,”JPEG”,OSOUTCLEAROUTPAGECONTEXTPUSHBODY713其他问题1抛出异常JAVASQLSQLEXCEPTIONMICROSOFTODBC驱动程序管理器无效的游标状态。异常的解决是RSNEXT语句之后才可以有RSGETSTRING1。2在房间选择页面中选择房间操作的过程总,必须在JSP脚本中定义,而不可以JSP声明来定义。不然在刷新页面后,该变量值就会将原来的房间人数再加一次,之所以在原来的值上再加是因为变量的值没有被及时情况,必然会在已有的值的基础上再次相加,显然这样不可取,所以,变量的定义只能在JSP脚本中。3实际的设计中管理员并不存在,也就没有单独提供管理员的单独登录,只是有相同意义的权限的用户存在,这是指用户的积分大于1000分时所产生的不同,用户可以进行踢人的高级功能,可以把不遵守聊天室规范的聊友踢出聊天室从而维护聊天室秩序等同于管理者,而积分会随着每次踢人操作减少。4原计划中,该WEB系统仅通过JSP技术完成的,并未引入JAVABEAN和SERVLET技术。鉴于任务书上的要求,进行了进一步的开发,刚开始是想将分离开部分显示模块和功能处理模块,提取用户请求中的表单信息并对信息进行处理的操作疯长在JAVABEAN中,至于JAVABEAN的调用则通过SERVLET来完成控制。对转发到SERVLET的请求,SERVLET会以创建JAVABEAN对象的方式进而来调用JAVABEAN,在JAVABEAN中对数据进行处理,主要是与数据库的记录信息的比对工作,以及比对结果的返回信息的处理,通过对不同返回信息的设定将不同的资源返回或者转发。由于时间的问题,这样的框架的思想局限在了注册、登录和选择聊天室页面中。5在开发的过程中,由于页面间的值传递而导致PARENTFORM1WINDOW为空或不是对象的问题,经过仔细的调试确定了问题的产生是页面之间值传递存在诸多的错误之处。对于这一类的问题,解决问题的主要方法是通过ID或者NAME有效的区别标签从而使得框架页面中的标签有了更好的可分辨性,如此方便了调用保证了值传递的争取性。具体的处理方式就是PARENTMAINFRAMEWINDOWSCROLL0,60000MAINFRAME框架是与显示页面关联的。72心得体会该系统的设计基本按照任务书中的要求实现了之前的预期目标。基本实现了一个可以用于聊天的WEB聊天室。用户一经注册成功,即拥有了一个自己独立的账户,该账户信息被保存在数据库中,方便用户的下一次的登录,有了一个自己的账户就可以方便的参与到聊天会话当中,完全不需要每次登录的时候重新注册一遍,而且该账户可以个性化用户名,通过个性化用户名可以更好的建立自己的虚拟角色,也可以扩大个人的特色影响力,方便建立稳定而长期的聊天氛围。系统对聊天室中的聊天内容的处理,基本符合任务书中的要求,即完成了用户间的多人聊天会话模式下的信息的交互以及只限于两个用户之间私聊的“悄悄话”会话模式,系统也及时提醒聊天室内的在线聊友的最新状况,比如说系统会显示欢迎信息,用来为大家提示有新的聊友参与进来了,也会显示某个用户被人踢出了聊天室的信息,告知大家该用户已经不能参与聊天。通过一系列下拉框选项的选择,聊天时用户根据自己的需要完全自主地选择准备好的众多表情文字,同时对自己的文字的样式可以进行简单的处理(字体,大小之类)。该聊天室的界面简洁具有较好的用户体验,容易上手,依据所给出的明确的提示信息,用户可以很快体会到聊天室自由聊天的快乐。出于统一管理的考虑,该系统不设置管理员的实体存在(不存在管理员的登录登出的功能),只是把管理员的管理功能以积分大于1000的用户具有的踢人功能这种方式存在,从而达到对聊天室的聊天环境的约束管理,更好的提供一个聊天的良好氛围。通过对不符合聊天室规范的用户进行管理,将其踢出聊天室,可以说管理员以积分大于1000的用户形式存在。登录系统成功后,当前用户通过点击链接即可看到所有的当前在线的用户,在聊天的同时,可以很方便的在主页面的右侧通过超链接的页面还可以方便的对自己用户信息以及密码等进行修改,更好的保障用户信息的安全性,经过修改后的密码在用户下次登录的时候就会生效。通过上面的一些基本的功能的实现,用户可以自由进行一定的聊天活动,基本符合一个普通聊天室的要求。通过一次次的修改完善,该聊天室系统初步具备了聊天的基本功能,但需要改进的地方仍有很多,系统的设计与功能的实现还有所欠缺。“追求卓越,追求更好”,这是每个人创造价值,完善自我的必经之路,同时这也是推动科技发展进步的必经之路。目标是一个又一个的远方,渴望实现更为完善的功能,在一次次面对需求的修改与程序的调试的努力过程中,我也一点点的发现了更多需要完善的地方,诸多的缺陷,不论从美观上还是系统的稳定性上以及功能的丰富性上都有很大可以拓展的地方。出于实习期间的工作的繁重压力,在对该系统进行设计完善的时间显然被缩短了不少,这让我感到了一定压力,刚开始的时候由于接触较少,不曾对这一类的系统的设计有了解,以至于一段时间内无从下手,现在的系统的功能还很不完善,尤其是数据库设计存在数据冗余现象,稳定性上有待改进。通过对一些主流媒体网站的聊天室的了解,发现还有很多可以添加的小功能,例如可以在用户注册信息的时候同时选择一个头像更直观的体现用户的个性化,而当用户对某个聊友的资料感兴趣的时候可以查看聊友的部分资料,或者可以添加一个涂鸦功能,增加聊天中的趣味性等等,好的想法没能实现是个遗憾,当然在技术方面也存在着一些设计的细节上的欠考虑,甚至有一些不是很合理之处。对于被踢出的用户而言有些处理的过重了,因为一旦踢出,除非服务器重启否则不能再次加入聊天室中参与聊天了。这是因为设计的时候在APPLICATION中存放被踢出的用户名。所以具有较高的素质就是一个对注册用户的潜在要求。或许会对一些用户带来不便等。对于用户的登出操作,设置为需要点击注销才能正常的登出,如果只是在登陆成功后关闭浏览器离开聊天室,就会造成有关用户的信息依然存在于USER_LIST表中的情况,这里是有待改进的,实现该功能可以借助对SESSION的监听来完成。数据存储在数据库中,而数据库中表的设计存在数据冗余的状况,对于这个问题,考虑添加字段ONLINE在USER表中用来标识用户的在线情况。从而减少USER_LIST表。该系统在主页面使用了框架结构,这就对用户的浏览器有一定的要求,需要浏览器对框架技术有支持,一旦浏览器不支持框架,就会造成用户无法进入聊天室主页面的的情况,即无法正常地参与到聊天中来。这里对用户可能所使用的浏览器的考虑不那么周详,当然主流的浏览器现在都已经支持了框架技术。该系统设计的时候主要用到了IE9浏览器,并未对所有的IE浏览器版本进行测试,所以可能在实际使用中会因为用户的浏览器而产生一定的效果上的偏差,甚至存在用户根本无法浏览的情况,所以该聊天室系统的诸多页面采用一些简单的元素尽可能使得用户体验效果趋于一致。对于数据库的设计方面显得比较简单,尤其是在对于数据库的安全方面所做的防护措施也比较缺失。由于使用JAVA语言开发该聊天室的过程中,实现聊天室所需大部分技术要求只用到了SESSION和APPLICATION两个变量,这样一来使得数据库方面的技术要求就不那

温馨提示

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

评论

0/150

提交评论