基于Java网页版聊天室的设计与实现.doc

上传人:文****钱 文档编号:43662 上传时间:2018-05-10 格式:DOC 页数:24 大小:337KB
下载 相关 举报
基于Java网页版聊天室的设计与实现.doc_第1页
第1页 / 共24页
基于Java网页版聊天室的设计与实现.doc_第2页
第2页 / 共24页
基于Java网页版聊天室的设计与实现.doc_第3页
第3页 / 共24页
基于Java网页版聊天室的设计与实现.doc_第4页
第4页 / 共24页
基于Java网页版聊天室的设计与实现.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、1本科生毕业论文(设计)题目基于JAVA网页版聊天室的设计与实现姓名学院理学院专业信息与计算科学班级信科092学号23109223指导教师职称副教授20年月日南京农业大学教务处制2目录摘要1关键词1ABSTRACT1KEYWORDS1引言(或绪论)11材料与方法Y11材料Y12方法Y121Y122Y123Y124Y2Y21Y3Y(略)X(正文第X章)Y致谢Y参考文献Y附录A(必要时)Y附录B(必要时)Y图1(必要时)Y图2(必要时)Y表1(必要时)Y表2(必要时)Y3基于JAVA网页版聊天室的设计与实现信息与计算科学指导老师摘要随着INTERNET的普及和宽带网络技术的成熟,聊天室这种交流方式

2、已经被大众所认可。通过聊天室在线聊天已成为网络上人与人之间的沟通、交流和联系的一种方式,为此越来越多的网站开始提供在线聊天的功能。与此同时,聊天室也以其方便、快捷和低成本等优势受到众多企业的青睐,很多企业的网站中也加入了聊天室,以达到增进企业与消费者之间、消费者与消费者之间相互交流和联系的目的。本毕业论文设计的聊天室系统采用JSP开发工具和AJAX技术,实现聊天室的群聊、私聊功能和显示在线聊天用户信息等功能。关键词聊天室,在线聊天,AJAX技术,JSPDESIGNANDIMPLEMENTATIONOFJAVAWEBVERSIONOFCHATROOMSSTUDENTMAJORININFORMAT

3、IONANDCOMPUTINGSCIENCEYIWANGCHENGUIDANCETEACHERAIPINGLIABSTRACTWITHTHEPOPULARITYOFTHEINTERNETANDBROADBANDNETWORKTECHNOLOGYMATURES,CHATROOMS,THISFORMOFCOMMUNICATIONHASBEENTHEPUBLICRECOGNITIONTHROUGHCHATROOMS,ONLINECHATHASBECOMEAWAYOFCOMMUNICATION,EXCHANGESANDCONTACTBETWEENPEOPLEONTHENETWORK,THISMOREA

4、NDMOREWEBSITESSTARTEDOFFERINGONLINECHATFUNCTIONATTHESAMETIME,THECHATROOMSALSOFAVOREDBYMANYBUSINESSESWITHITSCONVENIENT,EFFICIENTANDCOSTADVANTAGES,THESITEOFMANYCOMPANIESALSOJOINEDTHECHATROOM,INORDERTOACHIEVETHEINCREASEBETWEENBUSINESSESANDCONSUMERS,THECONSUMERANDTHECONSUMERTHEPURPOSEOFMUTUALEXCHANGEAND

5、CONTACTTHECHATROOMSYSTEMDESIGNEDINTHISTHESISJSPDEVELOPMENTTOOLSANDAJAXTECHNOLOGYTOACHIEVETHECHATROOMGROUPCHAT,PRIVATECHATFEATURESANDDISPLAYONLINECHATUSERINFORMATIONANDOTHERFUNCTIONSKEYWORDSCHATROOMS,ONLINECHAT,AJAXTECHNOLOGY,JSP引言目前,越来越多的用户进入到网络世界中享用浏览新闻、查询信息、发送邮件、在线观看电影等服务,享受网络带来的便利和办公的高效。与此同时,一个新型

6、的WEB应用程序为网民之间提供了一个即时互通信息的功能和场所,这就是聊天室。聊天室系统作为本人毕业设计课题,规模适中,适合于个人开发,能够锻炼本人的学习新知识能力、编程能力、软件工程思维方式。本次毕业论文设计的聊天室系统以如何更高效和及时的实现用户间的聊天为主要目标,仿照现在最流行的腾讯QQ聊天工具,在腾讯QQ聊天工具的基础上加以改进,舍弃掉腾讯原有的客户端软件,以网页替代,并加上屏蔽敏感词汇等功能。1系统任务与目标11系统任务此系统是以用户为中心的人性化设计,总体来看,系统可以看作是用户模块和聊天室两大模块的协调运作。111用户注册登陆功能4用户第一次登录该聊天室,没有账号,用户可以注册,注

7、册成功后才可以登录。用户通过提交用户名称和用户密码进行登陆,系统便会根据这些登陆资料,辨别出用户是否存在,密码正确则顺利登陆,密码错误将提示用户再次输入密码。112聊天功能用户既可以公聊,也可以和特定选择的用户进行私聊,系统会根据用户公聊或私聊选择将聊天内容显示给不同的用户;同时系统会根据后台敏感词汇数据库表,判断用户聊天的内容是否有敏感词汇,内容和谐时正常显示,包含敏感词汇时自动屏蔽。113显示功能用户上线后系统会自动将已经上线的用户列表显示给当前用户,另外如有用户登录或退出时,在线用户列表会自动的刷新,以保证上线用户的有效性。114退出功能聊天室有两种退出方式,一种是单击主页面中的“退出聊

8、天室”按钮,另一种是直接单击了浏览的关闭按钮,无论是何种退出,系统都能实现安全退出聊天室。12系统目标121、功能目标争取完全实现需本设计研究内容中定义的功能,希望能够有时间进行版本升级,如果可能进一步实现扩展的音频和视频聊天的功能。122、性能目标在网络正常的情况下能够快速将页面加载完毕,并且显示出聊天室中的所有成员,操作响应迅速,有较强的兼容性,能够在IE、遨游、火狐等流行的浏览器中正常运行。可扩展性强、可维护性强。123、其它目标页面美观大方、操作简单易用、用户体验好。2系统需求分析一个完美得及时聊天工具,它将为用户提供友好的界面,丰富的功能,方便用户的使用,下面是该毕业设计需求的详细描

9、述。21页面设计模块功能需求A第一次使用系统的用户通过填写个人信息来注册,并能验证用户名的有效性是否重名;B使已经注册的用户可以在验证他的登录信息(一般指用户名和密码)后登录系统;C能和所有人聊天,即要求实现公聊;D能选择特定的聊天的对象,即要求实现私聊;E能够随意选择聊天文本的颜色;F能够选择聊天的语言动作和表情;G能够自动显示聊天室中的在线成员;22文本聊天功能这是页面的主要界面区域,为一个编辑框形式的窗口,其中用于显示聊天信息和系统通知用户的信息,该编辑框中可拷贝文字或图片,但不支持修改里面信息。221聊天室成员列表5以列表方式显示该聊天室中现在在线的成员,成员最多显示100位,但是在聊

10、天的时候没有显示出的成员的发言信息依旧会在文本信息框中显示,每一个聊天室支持1000名成员同时在线聊天,该成员列表可隐藏。222消息发送功能在菜单栏中可点击选择显示在线好友列表,此时以列表的方式显示所有在线的好友,可以选某位,然后在下面的文本聊天编辑框中进行消息的发送,当然也提供全选的功能。223文字设置功能在文本聊天框下方的工具栏中包含文字颜色和字体选项,选择颜色或字体后以后输入的文本颜色将改变为设置的颜色,字体也改变,且聊天对方可见变化。224聊天记录功能在文本聊天框下方的工具栏中包含聊天记录的选项,可以点击选择显示今天、最近两天、最近一星期的聊天记录,聊天记录中只包含聊天室成员的聊天信息

11、而不包含系统的提示信息。23后台通讯模块功能需求由于是即时通讯,所以用AJAX实现,将客户端发送的请求及时响应并返回数据。24数据库访问模块功能需求将服务器发送的查询请求及时响应,并将结果返回。3数据库设计31创建数据库和数据表根据需求分析,本毕业设计的聊天室需要3各表,分别是用户信息表,敏感词汇表和聊天消息表。数据表名数据表中文名称数据表用途USER用户信息表保存用户的基本信息SENSITIVITY敏感词汇表存储敏感词汇INFORMATION聊天消息表存储聊天消息32创建基本信息表321用户信息表字段名字段描述数据类型可否为空USERNAME用户名文本主键PASSWORD密码文本非空SEX性

12、别文本AGE年龄数字322敏感词汇表字段名称字段描述数据类型可否为空WORD敏感字文本主键323聊天消息表6字段名称字段描述数据类型可否为空INFORMATIONID消息编号数字主键SENDER消息发送者文本RECEIVER消息接收者文本INFORMATIONDATE消息时间日期/时间4关键技术和难点41监控用户在线状态在聊天室程序中需要实时监控用户在线状态,当用户非正常退出时(例如当用户没有单击“退出聊天室”按钮,也没有单击窗口的关闭按钮,而是直接将页面转向其他网站)将该用户从用户列表中删除。可以应用SERVLET中的HTTPBINDINGLISTENER接口实现此效果,HTTPBINDIN

13、GLISTENER接口监听HTTP会话中的对象时不需要在WEBXML中设定监听。通过HTTPBINDINGLISTENER接口监控用户在线状态的具体步骤411编写用来保存在线用户和对在线用户碱性具体操作的类USERINFO,在该类中主要暴扣返回外界使用的实例对象、添加用户、获取用户列表和移除用户的方法。USERINFO类的具体代码如下IMPORTJAVAUTILVECTORPUBLICCLASSUSERINFOPRIVATESTATICUSERINFOUSERNEWUSERINFOPRIVATEVECTORVECTORNULL/利用PRIVATE调用构造函数,防止被外界产生新的INSTANCE

14、对象PUBLICUSERINFOTHISVECTORNEWVECTOR/外界使用的INSTANCE对象PUBLICSTATICUSERINFOGETINSTANCERETURNUSER/增加用户PUBLICBOOLEANADDUSERSTRINGUSERIFUSERNULLTHISVECTORADDUSERRETURNTRUEELSERETURNFALSE/获取用户列表PUBLICVECTORGETLISTRETURNVECTOR/移除用户PUBLICVOIDREMOVEUSERSTRINGUSERIFUSERNULLVECTORREMOVEELEMENTUSER7412创建USERLISTE

15、NER类,主要实现VALUEBOUNDHTTPSESSIONBINDINGEVENTARG0和VALUEUNBOUNDHTTPSESSIONBINDINGEVENTARG0方法,用于监控SESSION中的对象变化情况。在该方法中,通过VALUEBOUND()方法向控制台输出上线用户的信息,通过VALUEUNBOUND方法向控制台输出下线用户的信息。USERLISTENER类的具体代码如下IMPORTJAVAXSERVLETHTTPHTTPSESSIONBINDINGEVENTPUBLICCLASSUSERLISTENERIMPLEMENTSJAVAXSERVLETHTTPHTTPSESSION

16、BINDINGLISTENERPRIVATESTRINGUSERPRIVATEUSERINFOCONTAINERUSERINFOGETINSTANCEPUBLICUSERLISTENERUSER“/设置在线监听人员PUBLICVOIDSETUSERSTRINGUSERTHISUSERUSER/获取在线监听PUBLICSTRINGGETUSERRETURNTHISUSER/当SESSION有对象加入时执行的方法PUBLICVOIDVALUEBOUNDHTTPSESSIONBINDINGEVENTARG0SYSTEMOUTPRINTLN“上线用户“THISUSER/当SESSION有对象移除时执行

17、的方法PUBLICVOIDVALUEUNBOUNDHTTPSESSIONBINDINGEVENTARG0SYSTEMOUTPRINTLN“下线用户“THISUSERIFUSER“CONTAINERREMOVEUSERUSER413在聊天室的SERVLET实现类的登录聊天室的LONGINROOM方法中,首先获得登录用户名和USERINFO类的对象,然后SESSION的过期时间设置为10分钟,在将该用户添加到USERINFO类的对象中,最后将USERLISTENER对象到SESSION中。关键代码如下/获得登录用户名STRINGUSERNAMESUTOGBKREQUESTGETPARAMETER“

18、USERNAME“USERINFOUSERUSERINFOGETINSTANCE/获得USERINFO类的对象SESSIONSETMAXINACTIVEINTERVAL600/设置SESSION的过期时间为10分钟8USERLISTENERULNEWUSERLISTENER/创建USERLISTENER的对象ULSETUSERUSERNAME/添加用户USERADDUSERULGETUSER/添加用户到USERINFO类的对象中SESSIONSETATTRIBUTE“USER“,UL/将USERLISTENER对象绑定到SESSION中上述的代码中,一定要将USERLISTENER对象绑定到S

19、ESSION中,否则起不到监听的效果。42通过快捷键发送聊天消息使用过的QQ聊天软件的用户都知道,在通过QQ聊天时,编好聊天内容后按下快捷键(CTRLENTER)即可发送聊天内容,实现该功能只需要在聊天内容的文本框的ONKEYDOWN事件中判断当前按下的快捷键是否为(CTRLENTER),如果是则调用自定义的SEND方法发送聊天内容。关键代码如下43实现私聊所谓私聊就是只有发言人和接收人可以看到该信息,其他用户不能看到该信息,这样可以保证用户间的悄悄话不被其他用户所看到。431在保存聊天信息的XML文件中设置一个ISPRIVATE节点,用于记录聊天信息是否为私聊信息。ISPRIVATE节点的值

20、为TRUE或FALSE,值为TRUE时表示是私聊信息,否则表示不是私聊信息。添加私聊信息在XML文件中的显示代码如下WGH微笑着无语FONTCOLOR”/FONT”2013315155141TRUE432当用户输入聊天信息并发送后,在接收聊天信息的SERVLET中,将聊天信息保存在XML文件中,包括是否为私聊信息的参数(ISPRIVATE)。关键代码如下ELEMENTISPRIVATENODENEWELEMENT“ISPRIVATE“SETTEXT“FALSE“NEWNODEADDCONTENTISPRIVATENODE433在显示输入内容时,判断聊天内容是否为私聊内容,即ISPRIVATE节

21、点是否为TRUE,如果是则在发言人和接收人的窗口中输出该聊天信息,并且在前面加入标记内容“私人对话”,关键代码如下BOOLEANISPRIVATEBOOLEANVALUEOFITEMGETCHILDTEXT“ISPRIVATE“IFISPRIVATE/获取私聊内容IFUSERNAMEEQUALSTO|USERNAMEEQUALSFROMMESSAGES“私人对话“FROM“FACE“对“9TO“说“CONTENT“SENDTIME“44滚屏显示在实现聊天时,为了让用户可以及时看到最新发言,需要对聊天内容内容进行滚屏显示,同时为了让用户可以看到全部聊天内容,还需要提供不滚屏显示的功能。实现滚屏显

22、示时,可以分为整个窗口的滚动和页面中元素的滚动两种情况441对整个窗口的内容进行滚动滚动整个窗口,即对滚动条进行定位为,可以通过SROLL函数的语法如下WINDOWSCROLLX,Y其中,参数X表示滚动条水平位置的坐标;参数Y表示滚动条垂直位置的坐标。另外将滚动条置底,只要将Y的值设置的大一些即可,具体代码如下FUNCTIONSCROLLWINDOWTHISSCROLL0,75000SETINTERVALSCROLLWINDOW,1000SCROLLWINDOW这样每隔1000毫秒执行一次该函数,就可以让滚动条永远置底了。442对指定页面元素中的内容进行滚动对指定页面元素中的内容进行滚动可以通

23、过SCROLLTOP属性实现。SCROLLTOP属性表示当前对象的顶点距离其最外层对象元素的距离。代码如下OBJECTSCROLLTOPDISTANCE聊天室的内容显示区中滚屏效果就是使用该属性来定位最新聊天内容的。4421在页面的合适位置添加一个标记用于显示聊天内容。由于在现实聊天信息时默认情况下是滚屏显示,因此需要将该层的OVERFLOW属性设置为HIDDEN即隐藏,具体代码如下聊天内容4422添加一个用户控制是否滚屏的复选框,在该复选框的ONCLICK事件上调用一个用于控制是否滚屏的方法CHECKSCORLLSCREEN,具体代码如下4423编写一个自定义的JAVASCRIPT函数CHE

24、CKSRCOLLSCREEN用于控制是否滚屏,在该方法中,首先判断添加的复选框是否为选中状态,如果不是则表示滚屏,否则将设置聊天内容的标记的SCROLLTOP属性等于它的滚动高度乘以2,。CHECKSRCOLLSCREEN函数的具体代码如下FUNCTIONCHECKSCROLLSCREENIFFORM1SCROLLSCREENCHECKEDDOCUMENTGETELEMENTBYID“CONTENT“STYLEOVERFLOWSCROLL10ELSEDOCUMENTGETELEMENTBYID“CONTENT“STYLEOVERFLOWHIDDEN/当聊天信息超过一屏时,设置最先发送的聊天信息

25、不显示DOCUMENTGETELEMENTBYIDCONTENTSCROLLTOPDOCUMENTGETELEMENTBYIDCONTENTSCROLLHEIGHT2SETTIMEOUTCHECKSCROLLSCREEN,50045自动踢出长时间不发言的用户为了保证聊天室的搞笑运行,需要提供踢出长时间不发言用户的功能。在实现踢出长时间不发言的用户时,可以通过采用JAVASCRIPT脚本的WINDOW对象的SETTIMEOUT方法定时调用退出系统的函数实现。WINDOW对象的SETTIMEOUT方法用于延迟代码的执行,该方法的基本语法格式如下WINDOWSETTIMEOUTCODE,DELAY其

26、中,CODE用于指定要延迟执行的代码(通常为一个自定义的JAVASCRIPT函数);DELAY用于指定延迟时间(以毫秒为单位)。通过WINDOW对象的SETTIMEOUT方法实现定时踢出指定用户的具体代码TIMERWINDOWSETTIMEOUT“EXIT”,上述的代码实现了定时踢出长时间不发言的用户,如果想实现踢出长时间不发言的用户,还需要在用户发言后,将上述的计时器重新计时。具体代码如下CLEARTIMEOUTTIMERTIMERWINDOWSETTIMEOUT“EXIT”,注意在实现用户发言的方法中,一定要调用此方法,否则不会更新用户的发言时间,造成即使用户发言了还是被踢出了。46敏感词

27、的自动屏蔽在以QQ聊天室为首的大多数聊天室都没有屏蔽敏感词汇功能,为了营造良好的网络文明用语环境,本聊天室特意增设此功能。用户进入聊天室就会看到有醒目的提醒,提醒大家文明聊天,不要说一些的敏感的字眼。而一旦有用户说了敏感的字眼,系统就要自动屏蔽掉。在服务器数据库将那些敏感的字放进去,一旦用户聊天时,系统自动将用户的聊天的词语在数据库中去查找,一旦有敏感的词,通过控制器SERVLET的内容过滤(FILTERWRAPPER)修改输出的的字符串,改为“”。关键代码如下REQUESTNEWHTTPSERVLETREQUESTWRAPPERHTTPSERVLETREQESTREQUESTPUBLICST

28、RINGGETPARAMTERSTRINGINFORIFSENSITIVITYCONTAINSINFORINFOR”5系统程序开发51用户模块当用户访问聊天室时,首先进入的是登录聊天室页面。如果用户没有账号,则可以点击页面的注册链接,进入到注册页面;如果用户之前已经登录过,则直接输入用户名、密码和验证码,进行登录。11511用户注册当用户进入到注册页面后,提示用户填写详细信息,点击“注册”按钮后,系统开始判断用户名和密码是否非法,判断用户名是否已经被注册,如果都能验证通过才允许用户注册成功。下面是详细描述5111设计注册聊天室页面,该页面用于新用户注册关键代码如下用户名密码5112设计聊天室的

29、SERVLET实现类,添加注册聊天室的方法REGISTROOM。在该方法中,首先获得注册用户,然后判断用户名和密码是否为空或已存在。如果注册成功,自动登录该用户。具体代码如下PUBLICBOOLEANREGISTROOMHTTPSERVLETREQUESTREQUEST,HTTPSERVLETRESPONSERESPONSETHROWSSERVLETEXCEPTION,IOEXCEPTIONSTRINGUSERNAMEREQUESTGETPARAMETER“USERNAME“USERUSERUSERGETSERVLETCONTEXTGETATTRIBUTEUSERNAMEIFUSERNULLS

30、TRINGPASSWORDREQUESTGETPARAMETER“PASSWORD“STRINGEMAILREQUESTGETPARAMETER“EMAIL“STRINGADDRESSREQUESTGETPARAMETER“ADDRESS“STRINGPHONENUMREQUESTGETPARAMETER“PHONENUM“USERNEWUSERUSERNAME,PASSWORD,EMAIL,ADDRESS,PHONENUM/写入文件,加入到内存,并且标记为登录GETSERVLETCONTEXTSETATTRIBUTEUSERNAME,USERREQUESTGETSESSIONSETATTRI

31、BUTE“USERID“,USERRETURNTRUEELSEREQUESTSETATTRIBUTE“REGISTER“,“注册失败,用户已存在“RETURNFALSE5113编写注册成功页面REGIST_OKJSP,在该文件中将页面重定向到聊天室的主界面。注册成功的具体代码如下512用户登录当用户单击“登录”按钮后,系统将判断用户名是否存在,密码是否和用户名搭配,用户是否已登录,如果都能验证通过才允许用户登录成功。实现登录的具体步骤如下5121设计登录聊天室页面,该页面主要用于收集用户输入的登录信息,以及通12过自定义的JAVASCRIPT函数验证输入信息是否为空和是否包括非法字符,该页面的

32、表单元素包括输入用户名、密码的文本框和登录提交表单的按钮,具体代码如下用户名密码5122在聊天室的SERVLET实现类中,添加登录聊天室的方法LOGINROOM,在该方法中,首先获得登录用户,然后判断用户名是否存在、密码是否和用户名搭配、用户是否已登录。如果登录成功,将该用户添加到在线用户列表中,然后向向保存聊天信息的XML文件中添加一条系统公告,最后将页面重定向到登录页面;否则返回到登陆界面,并给出相应的提示信息。具体代码如下PUBLICVOIDLOGINROOMHTTPSERVLETREQUESTREQUEST,HTTPSERVLETRESPONSERESPONSERESPONSESETC

33、ONTENTTYPE“TEXT/HTMLCHARSETGBK“HTTPSESSIONSESSIONREQUESTGETSESSIONSTRINGUTILSSUNEWSTRINGUTILS/获得登录用户名STRINGUSERNAMESUTOGBKREQUESTGETPARAMETER“USERNAME“USERINFOUSERUSERINFOGETINSTANCE/获得USERINFO类的对象/设置SESSION的过期时间为10分钟SESSIONSETMAXINACTIVEINTERVAL600VECTORVECTORUSERGETLISTBOOLEANFLAGTRUE/标记是否登录的变量/判断

34、用户是否登录IFVECTORNULLIALERT该用户已经登录WINDOWLOCATIONHREFINDEXJSP“CATCHIOEXCEPTIONEEPRINTSTACKTRACEFLAGFALSEBREAK/保存用户信息13IFFLAGUSERLISTENERULNEWUSERLISTENER/创建USERLISTENER的对象ULSETUSERUSERNAME/添加用户/添加用户到USERINFO类的对象中USERADDUSERULGETUSER/将USERLISTENER对象绑定到SESSION中SESSIONSETATTRIBUTE“USER“,UL/保存当前登录的用户名SESSIO

35、NSETATTRIBUTE“USERNAME“,USERNAMESESSIONSETATTRIBUTE“LOGINTIME“,NEWDATETOLOCALESTRING/保存登录时间/开始系统公告/当文件不存在时创建该文件STRINGFILEURLCREATEFILEREQUEST,RESPONSE/获取当前用户SAXBUILDERBUILDERNEWSAXBUILDERTRYDOCUMENTFEEDDOCBUILDERBUILDFILEURLELEMENTROOTFEEDDOCGETROOTELEMENTELEMENTCHANNELROOTGETCHILD“MESSAGES“ELEMENTN

36、EWNODENEWELEMENT“MESSAGE“CHANNELADDCONTENTNEWNODE/创建MESSAGES节点ELEMENTFROMNODENEWELEMENT“FROM“SETTEXT“系统公告“NEWNODEADDCONTENTFROMNODEELEMENTFACENODENEWELEMENT“FACE“SETTEXT“NEWNODEADDCONTENTFACENODEELEMENTTONODENEWELEMENT“TO“SETTEXT“NEWNODEADDCONTENTTONODEELEMENTCONTENTNODENEWELEMENT“CONTENT“SETTEXT“US

37、ERNAME“走进了聊天室“NEWNODEADDCONTENTCONTENTNODE/登录时间ELEMENTSENDTIMENODENEWELEMENT“SENDTIME“SETTEXTNEWDATETOLOCALESTRINGNEWNODEADDCONTENTSENDTIMENODEELEMENTISPRIVATENODENEWELEMENT“ISPRIVATE“SETTEXT“FALSE“NEWNODEADDCONTENTISPRIVATENODEREQUESTGETREQUESTDISPATCHER“LOGIN_OKJSP“FORWARDREQUEST,RESPONSEXMLOUTPUT

38、TERXMLNEWXMLOUTPUTTERFORMATGETPRETTYFORMATXMLOUTPUTFEEDDOC,NEWFILEOUTPUTSTREAMFILEURL14CATCHEXCEPTIONEEPRINTSTACKTRACE5123编写登录成功页面LOGIN_OKJSP,在该文件中将页面重定向到聊天室的主界面。登录成功的具体代码如下52聊天室主体模块功能521设计聊天室主页面在用户登录成功或者注册成功后即可进入聊天室的主界面,在该页面中包括页面头部、在线人员列表区、聊天内容显示区和用户发言区4部分,布局如下页面头部在线人员列表区聊天内容显示区用户发言区聊天室主界面主要采用标签进行布

39、局,关键代码如下在线人员列表聊天内容522实时获取并显示在线用户列表15在开发聊天室程序时,为了让用户及时了解在线用户,并与其他用户进行交流,需要提供实时获取并显示在线人员列表的的功能。在聊天室的主界面中,左侧显示在线人员列表及在线人员。为了实时显示在线人员列表,本设计应用了AJAX技术。以下是实现获取并显示在线用户列表的功能5221编写自定义的JAVASCRIPT函数SHOWONLINE,用于实例化AJAX对象。SHOWONLINE函数的具体代码如下FUNCTIONSHOWONLINEVARLOADERNEWNETAJAXREQUEST“ONLINEJSPNOCACHE”NEWDATEGET

40、TIME,DEAL_ONLINE,ONERROR,”GET”在上述的代码中,一定要有该行代码“NOCACHE”NEWDATEGETTIME”,否则将出现在线人员表不更新的情况。5222本设计中AJAX进行异步请求目标的URL地址为ONLINEJSP,在该JSP文件中,主要是将保存在集合类中的在线人员列表显示到页面。ONLINEJSP页面的代码如下欢迎来到聊天室所有人0STRINGUSERNAME“AMOUNTVECTORSIZEFORINTI0I“16当前在线人5223在聊天室的主界面中,将左侧用于显示在线人员列表的单元格的ID属性设置为ONLINE,用于实时显示在线人员列表,具体代码如下在线

41、人员列表5224编写AJAX的回调函数DEAL_ONLINE,用于将获取的在线人员列表赋值给ID为ONLINE的标记的INNERHTML属性。DEAL_ONLINE函数的具体代码如下FUNCTIONDEAL_ONLINEONLINEINNERHTMLTHISREQRESPONSETEXT5225为了让页面载入后就调用AJAX获取在线人员列表,并且每隔10秒钟便获取一次数据,还需要在页面中添加JAVASCRIPT代码。具体代码如下WINDOWSETINTERVAL“SHOWONLINE”,10000WINDOWONLOADFUNCTIONSHOWONLINE523实现用户发言在聊天室程序中一个必

42、不可少的功能就是实现用户发言,在本设计的聊天室中,用户发言区位于聊天室主界面的底部,以下是实现用户发言的功能。5231在页面的合适位置添加用于收集用于收集用户发言信息的表单及表单元素,关键代码如下“对表情无表情的微笑着笑呵呵地热情的无精打采的说悄悄话17滚屏字体颜色默认颜色红色热情蓝色开朗在上面的代码中,语句用户显示当前的登录用户名。聊天对象文本框被设置为只读属性时用户就不能手动输入聊天对象,因此还需要提供选择聊天对象的功能,还可以通过在主页面中添加选择聊天对象添加选择聊天对象的JAVASCRIPT自定义函数及在在线人员列表中添加链接实现。实现将选择的聊天对象添加到聊天对象文本框的JAVASC

43、RIPT代码如下FUNCTIONSETSELECTPERSON/自动添加聊天对象IFSELECTPERSON“IFFORM1ISPRIVATECHECKEDELSEFORM1TOVALUESELECTPERSONELSEALERT“请重新选择聊天对象“5232编写自定义的JAVASCIRPT函数SEND,用于调用AJAX实现用户发言。在该函数中,首先验证输入信息的合法性,然后再将提交的表单元素的内容连接为一个参数字符串,最后实例化AJAX对象。SEND函数的具体代码如下FUNCTIONSEND/验证聊天信息并发送IFFORM1TOVALUE“18ALERT“请选择聊天对象“RETURNFALS

44、EIFFORM1CONTENT1VALUE“ALERT“发送信息不可以为空“FORM1CONTENT1FOCUSRETURNFALSEIFFORM1ISPRIVATECHECKEDISPRIVATE“TRUE“ELSEISPRIVATE“FALSE“VARPARAM“FROM“FORM1FROMVALUE“VARLOADERNEWNETAJAXREQUEST“MESSAGESACTIONACTIONSENDMESSAGE“,DEAL_SEND,ONERROR,“POST“,PARAM5233在聊天室相关的SERVLET实现类中添加发送聊天信息的方法SENDMESSAGES。在该方法中,首先获取

45、用户发言的相关信息。并对出现中文的信息进行转码,然后判断保存当天聊天信息的XML文件是否存在,如果不存在则创建该文件,最后将聊天信息保存到XML文件中,并重定向网页。SENDMESSAGES方法的具体代码如下PUBLICVOIDSENDMESSAGESHTTPSERVLETREQUESTREQUEST,HTTPSERVLETRESPONSERESPONSERESPONSESETCONTENTTYPE“TEXT/HTMLCHARSETGBK“STRINGUTILSSUNEWSTRINGUTILSRANDOMRANDOMNEWRANDOMSTRINGFROMSUTOUTF8REQUESTGETPA

46、RAMETER“FROM“/发言人STRINGFACESUTOUTF8REQUESTGETPARAMETER“FACE“/表情STRINGTOSUTOUTF8REQUESTGETPARAMETER“TO“/接收者STRINGCOLORREQUESTGETPARAMETER“COLOR“/字体颜色/发言内容STRINGCONTENTSUTOUTF8REQUESTGETPARAMETER“CONTENT“/是否为悄悄话STRINGISPRIVATEREQUESTGETPARAMETER“ISPRIVATE“STRINGSENDTIMENEWDATETOLOCALESTRING/发言时间/开始添加聊

47、天信息/当文件不存在时创建该文件STRINGFILEURLCREATEFILEREQUEST,RESPONSESAXBUILDERBUILDERNEWSAXBUILDERDOCUMENTFEEDDOC19TRYFEEDDOCBUILDERBUILDFILEURLELEMENTROOTFEEDDOCGETROOTELEMENTELEMENTCHANNELROOTGETCHILD“MESSAGES“ELEMENTNEWNODENEWELEMENT“MESSAGE“CHANNELADDCONTENTNEWNODE/创建MESSAGES节点ELEMENTFROMNODENEWELEMENT“FROM“S

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。