基于javaweb聊天室毕业论文.docx
- 文档编号:29343946
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:35
- 大小:207.66KB
基于javaweb聊天室毕业论文.docx
《基于javaweb聊天室毕业论文.docx》由会员分享,可在线阅读,更多相关《基于javaweb聊天室毕业论文.docx(35页珍藏版)》请在冰豆网上搜索。
基于javaweb聊天室毕业论文
本科生毕业论文(设计)
题目:
基于Java网页版聊天室的设计与实现
姓名:
陈义旺
学院:
理学院
专业:
信息与计算科学
班级:
信科092
学号:
23109223
指导教师:
李爱萍职称:
副教授
2013年5月27日
南京农业大学教务处制
目录
摘要1
关键词1
Abstract1
Keywords1
引言1
1系统任务与目标2
1.1系统任务2
1.1.1用户注册登陆功能2
1.1.2聊天功能2
1.1.3显示功能2
1.1.4退出功能2
1.2系统目标2
1.2.1功能目标2
1.2.2性能目标2
1.2.3其它目标3
2系统需求分析3
2.1页面设计模块功能需求3
2.2文本聊天功能3
2.2.1聊天室成员列表3
2.2.2消息发送功能3
2.2.3文字设置功能3
2.3后台通讯模块功能需求3
2.4数据库访问模块功能需求4
3数据库设计4
3.1创建数据库和数据表4
3.2创建基本信息表4
3.2.1用户信息表4
3.2.2敏感词汇表4
3.2.3聊天消息表4
4关键技术和难点5
4.1监控用户在线状态5
4.2通过快捷键发送聊天消息7
4.3实现私聊7
4.4滚屏显示8
4.4.1对整个窗口的内容进行滚动8
4.4.2对指定页面元素中的内容进行滚动9
4.5自动踢出长时间不发言的用户10
4.6敏感词的自动屏蔽10
5系统程序开发11
5.1用户模块11
5.1.1用户注册11
5.1.2用户登录13
5.2聊天室主体模块功能15
5.2.1设计聊天室主页面15
5.2.2实时获取并显示在线用户列表16
5.2.3实现用户发言18
5.2.4实时显示聊天内容22
5.3退出聊天室模块24
5.3.1实现安全退出聊天室功能24
5.3.2处理非正常退出聊天室25
6.总结25
7.致谢26
8.参考文献26
基于Java网页版聊天室的设计与实现
信息与计算科学陈义旺
指导老师李爱萍
摘要:
随着网络的普及和宽带技术的成熟,聊天室的使用越来越频繁,几乎所有网民在上网时都会进行聊天,通过聊天室聊天可以加强用户之间的沟通与交流。
聊天室在线聊天已成为人与人之间的沟通、交流和联系的一种方式,为此越来越多的网站开始提供在线聊天服务,为了增强网站的吸引力,这就要求聊天室功能强大以及制作美观。
本次毕业设计的聊天室系统以如何更高效和及时的实现用户间的聊天为主要目标,仿照现在最流行的腾讯qq聊天工具,在腾讯qq聊天工具的基础上加以改进,舍弃掉腾讯原有的客户端软件的繁琐安装,以浏览器网页替代,并加上屏蔽敏感词汇等功能。
关键词:
聊天室,在线聊天,浏览器网页,敏感词汇
DesignmentandImplementationofchatroomsbasedonJavaweb
StudentmajoringinInformationandComputationScienceChenYiwang
TutorLiAiping
Abstract:
WiththepopularityoftheInternetandthematurityofthebroadbandtechnology,moreandmorepeopleusechatrooms,whichcanenhancecommunicationandexchangebetweenusers.Chattingonlinehasbecomeawayofcommunicationbetweenpeople.Hencemoreandmorewebsitesstartofferingchattingserviceonline.Inordertoincreasetheattractivenessofthewebsite,itisnecessarythatchatroomshavebeautifulinterfaceswithmorefunctions.Thesystemofchatroomsofthisgraduationprojectregardsthathowtoimplementchatbetweenusersmoreefficientlyandtimelyasthechieftarget.FirstIimitatethemostpopularchattool,qq,thenimproveitbyreplacingthecumbersomeinstallationoftheclientofTencentwiththebrowserandincreasingmanyfunctionslikeshieldingsensitivewords.
Keywords:
chatrooms,onlinechat,browser,sensitivewords
引言:
目前,越来越多的用户进入到网络世界中享用浏览新闻、查询信息、发送邮件、在线观看电影等服务,享受网络带来的便利和办公的高效。
与此同时,一个新型的Web应用程序为网民之间提供了一个即时互通信息的功能和场所,这就是聊天室。
聊天室是提供给网站访问者一个对话交流的场所,通过聊天室可以加强沟通。
一个优秀的聊天室,能过及时显示聊天室的名称和该聊天室人员的数量,并在用户聊天过程中自动屏蔽掉不健康的消息,营造良好的文明用语环境。
作为一个信息与计算科学专业的学生,经过几年大学计算机知识的积累和为期一年的Java-web知识的系统培训,对计算机软件这个名词有了一定的认识,在这几年里,我对本专业学习也有了长足的进步,在毕业即临时,我就选择了自己感兴趣的基于Java网页版聊天室的设计与实现这个课题作为我的毕业设计及论文写作,以检验几年来的学习情况。
本毕业论文设计的聊天室是基于Java-web中MVC模式的思想,前台创建JSP的应用,运用javaScript技术对客户请求响应,并结合Ajax技术对客户发送的消息及时显示;后台创建Servlet的应用,结合JAVA中输入流和输出流对消息进行发送。
该系统包括服务端和客户端两部分,服务端程序主要负责侦听用户发来的信息,客户端只有成功登录到服务端才可以实现正常的聊天功能。
在用户进入聊天室后,聊天室系统会自动显示在线用户列表,以至于用户可以对其他用户公聊,也可以选择对某个用户进行私聊,在交谈过程中为了让对方真切体会到交谈者此时此刻的心情,还可以选择各种表情。
该聊天室在发送信息过程中页面流畅,负载能力强,灵活易用,性能稳定。
1系统任务与目标[1]
1.1系统任务
1.1.1用户注册登陆功能
用户第一次登录该聊天室,没有账号,用户可以注册,注册成功后才可以登录。
用户通过提交用户名称和用户密码进行登陆,系统便会根据这些登陆资料,辨别出用户是否存在,密码正确则顺利登陆,密码错误将提示用户再次输入密码。
1.1.2聊天功能
用户既可以公聊,也可以选择和特定的用户进行私聊,系统会根据用户公聊或私聊选择将聊天内容显示给不同的用户;同时系统会根据后台敏感词汇数据库表,判断用户聊天的内容是否有敏感词汇,内容和谐时正常显示,包含敏感词汇时自动屏蔽。
1.1.3显示功能
用户上线后系统会自动将已经上线的用户列表显示给当前用户,另外如有用户登录或退出时,在线用户列表会自动的刷新,以保证上线用户的有效性。
1.1.4退出功能
聊天室有两种退出方式,一种是单击主页面中的“退出聊天室”按钮,另一种是直接单击了浏览的关闭按钮,无论是何种退出,系统都能实现安全退出聊天室。
1.2系统目标
1.2.1功能目标:
争取完全实现需本设计研究内容中定义的功能,希望能够有时间进行版本升级,如果可能进一步实现扩展的音频和视频聊天的功能。
1.2.2性能目标:
在网络正常的情况下能够快速将页面加载完毕,并且显示出聊天室中的所有成员,操作响应迅速,有较强的兼容性,能够在IE、谷歌、火狐等流行的浏览器中正常运行。
可扩展性强、可维护性强。
1.2.3其它目标:
页面美观大方、操作简单易用、用户体验好。
2系统需求分析
一个完美的网页版聊天室,它将为用户提供友好的界面,丰富的功能,方便用户的使用,下面是该毕业设计需求的详细描述。
2.1页面设计模块功能需求
a.第一次使用系统的用户通过填写个人信息来注册,并能验证用户名的有效性是否重名;
b.使已经注册的用户可以在验证他的登录信息(一般指用户名和密码)后登录系统;
c.要求实现公聊,即公开聊天记录;
d.要求实现私聊,隐藏聊天记录;
e.能够随意选择聊天字体的颜色;
f.能够选择聊天的语言表情;
g.能够自动显示聊天室中的在线成员名和在线人数。
2.2文本聊天功能
这是页面的主要界面区域,为一个编辑框形式的窗口,其中用于显示聊天信息和系统通知用户的信息,该编辑框中可拷贝文字,但不支持修改里面信息。
2.2.1聊天室成员列表
以列表方式及时显示该聊天室中现在在线的成员。
2.2.2消息发送功能
在菜单栏中可点击选择在线用户列表中的其他用户,然后在下面的文本聊天编辑框中进行消息的发送,当然也提供全选的功能。
2.2.3文字设置功能
在文本聊天框下方的工具栏中包含文字颜色和字体选项,选择颜色或字体后以后输入的文本颜色将改变为设置的颜色,字体也改变,且聊天对方可见变化。
2.3后台通讯模块功能需求
由于是即时通讯,所以用Ajax实现,将客户端发送的请求及时响应并返回数据。
2.4数据库访问模块功能需求
将服务器发送的查询请求及时响应,并将结果返回。
3数据库设计
3.1创建数据库和数据表
根据需求分析,本毕业设计的聊天室需要3各表,分别是用户信息表,敏感词汇表和聊天消息表。
数据表名
数据表中文名称
数据表用途
User
用户信息表
保存用户的基本信息
Sensitivity
敏感词汇表
存储敏感词汇
Information
聊天消息表
存储聊天消息
3.2创建基本信息表
3.2.1用户信息表
字段名
字段描述
数据类型
可否为空
UserName
用户名
文本
主键
Password
密码
文本
非空
Sex
性别
文本
Age
年龄
数字
3.2.2敏感词汇表
字段名称
字段描述
数据类型
可否为空
Word
敏感字
文本
主键
3.2.3聊天消息表
字段名称
字段描述
数据类型
可否为空
InformationID
消息编号
数字
主键
Sender
消息发送者
文本
Receiver
消息接收者
文本
InformationDate
消息时间
日期/时间
ChatInformation
聊天消息
文本
4关键技术和难点
4.1监控用户在线状态
在聊天室程序中需要实时监控用户在线状态,当用户非正常退出时(例如当用户没有单击“退出聊天室”按钮,也没有单击窗口的关闭按钮,而是直接将页面转向其他网站)将该用户从用户列表中删除。
可以应用Servlet中的(HttpBindingListener接口)[2]实现此效果,HttpBindingListener接口监听HTTP会话中的对象时不需要在web.xml中设定监听。
通过HttpBindingListener接口监控用户在线状态的具体步骤:
4.1.1编写用来保存在线用户和对在线用户进行具体操作的类UserInfo,在该类中主要包括返回外界使用的实例对象、添加用户、获取用户列表和移除用户的方法。
UserInfo类的关键代码如下:
//增加用户
publicbooleanaddUser(Stringuser)[3]{
if(user!
=null){
this.vector.add(user);
returntrue;
}
returnfalse;
}
//获取用户列表
publicVectorgetList(){
returnvector;
}
//移除用户
publicvoidremoveUser(Stringuser){
if(user!
=null){
vector.removeElement(user);
}
}
4.1.2创建UserListener类,主要实现valueBound(HttpSessionBindingEventarg0)和valueUnbound(HttpSessionBindingEventarg0)方法,用于监控Session中的对象变化情况。
在该方法中,通过valueBound()方法向控制台输出上线用户的信息,通过valueUnbound()[8]方法向控制台输出下线用户的信息。
UserListener类的关键代码如下:
//设置在线监听人员
publicvoidsetUser(Stringuser){
this.user=user;
}
//获取在线监听
publicStringgetUser()[4]{
returnthis.user;
}
//当Session有对象加入时执行的方法
publicvoidvalueBound(HttpSessionBindingEventarg0){
System.out.println("上线用户:
"+this.user);
}
//当Session有对象移除时执行的方法
publicvoidvalueUnbound(HttpSessionBindingEventarg0){
System.out.println("下线用户:
"+this.user);
if(user!
=""){
container.removeUser(user);
}
}
4.1.3在聊天室的Servlet实现类的登录聊天室的longinRoom()方法中,首先获得登录用户名和UserInfo类的对象,然后Session的过期时间设置为10分钟,在将该用户添加到UserInfo类的对象中,最后将UserListener对象绑定到Session中。
关键代码如下:
//获得登录用户名
UserInfouser=UserInfo.getInstance();//获得UserInfo类的对象session.setMaxInactiveInterval(600);//设置Session的过期时间为10分钟
UserListenerul=newUserListener();//创建UserListener的对象
ul.setUser(username);//添加用户user.addUser(ul.getUser());//添加用户到UserInfo类的对象中
session.setAttribute("user",ul)[10];//将UserListener对象绑定到Session中
上述的代码中,一定要将UserListener对象绑定到Session中,否则起不到监听的效果。
4.2通过快捷键发送聊天消息
使用过的QQ聊天软件的用户都知道,在通过QQ聊天时,编好聊天内容后按下快捷键(Ctrl+Enter)即可发送聊天内容,实现该功能只需要在聊天内容的文本框的onKeyDown事件中判断当前按下的快捷键是否为(Ctrl+Enter),如果是则调用自定义的send()方法发送聊天内容。
关键代码如下:
4.3实现私聊
所谓私聊就是只有发言人和接收人可以看到该信息,其他用户不能看到该信息,这样可以保证用户间的悄悄话不被其他用户所看到。
4.3.1在保存聊天信息的XML文件中设置一个isprivate节点,用于记录聊天信息是否为私聊信息。
isPrivate节点的值为true或false,值为true时表示是私聊信息,否则表示不是私聊信息。
添加私聊信息在XML文件中的显示代码如下:
</font>”
51:
41
4.3.2当用户输入聊天信息并发送后,在接收聊天信息的Servlet中,将聊天信息保存在XML文件中,包括是否为私聊信息的参数(isPrivate)。
关键代码如下:
ElementisPrivateNode=newElement("isPrivate").setText("false");
newNode.addContent(isPrivateNode);
4.3.3在显示输入内容时,判断聊天内容是否为私聊内容,即isPrivate节点是否为true,如果是则只在发言人和接收人的窗口中输出该聊天信息,并且在前面加入标记内容“私人对话”,关键代码如下:
booleanisPrivate=Boolean.valueOf(item.getChildText("isPrivate"));
if(isPrivate){//获取私聊内容
if(userName.equals(to)||userName.equals(from)){
messages+=
"
+from
+"
+"对
+"]说:
"+content
+"
+sendTime+"]
";
}
}
4.4滚屏显示
在实现聊天时,为了让用户可以及时看到最新发言,需要对聊天内容进行滚屏显示,同时为了让用户可以看到全部聊天内容,还需要提供不滚屏显示的功能。
实现滚屏显示时,可以分为整个窗口的滚动和页面中元素的滚动两种情况:
4.4.1对整个窗口的内容进行滚动
滚动整个窗口,即对滚动条进行定位,可以通过sroll()函数的语法如下:
window.scroll(x,y)
其中,参数x表示滚动条水平位置的坐标;参数y表示滚动条垂直位置的坐标。
另外将滚动条置底,只要将y的值设置的大一些即可,关键代码如下:
functionscrollWindow(){
this.scroll(0,75000);
setInterval(‘scrollWindow()’,1000);
scrollWindow();
}[11]
这样每隔1000毫秒执行一次该函数,就可以让滚动条永远置底了。
4.4.2对指定页面元素中的内容进行滚动
对指定页面元素中的内容进行滚动可以通过scrollTop属性实现。
scrollTop属性表示当前对象的顶点距离其最外层对象元素的距离。
代码如下:
object.scrollTop=distance;
聊天室的内容显示区中滚屏效果就是使用该属性来定位最新聊天内容的。
4.4.2.1在页面的合适位置添加一个
由于在现实聊天信息时默认情况下是滚屏显示,因此需要将该层的overflow属性设置为hidden即隐藏,关键代码如下:
290px;overflow: hidden”id=”content”>聊天内容
4.4.2.2添加一个用户控制是否滚屏的复选框,在该复选框的onClick事件上调用一个用于控制是否滚屏的方法checkScorllScreen()[11],关键代码如下:
4.4.2.3编写一个自定义的JavaScript函数checkSrcollScreen()用于控制是否滚屏,在该方法中,首先判断添加的复选框是否为选中状态,如果不是则表示滚屏,否则将设置聊天内容的
checkSrcollScreen()函数的关键代码如下:
functioncheckScrollScreen()63]{
if(!
form1.scrollScreen.checked){
document.getElementById("content").style.overflow='scroll';
}else{
document.getElementById("content").style.overflow='hidden';
//当聊天信息超过一屏时,设置最先发送的聊天信息不显示
document.getElementById('content').scrollTop=document.getElementById('content').scrollHeight*2;
}
setTimeout('checkScrollScreen()',500);
}
4.5自动踢出长时间不发言的用户
为了保证聊天室的搞笑运行,需要提供踢出长时间不发言用户的功能[7]。
在实现踢出长时间不发言的用户时,可以通过采用JavaScript脚本的window对象的setTimeout()方法定时调用退出系统的函数实现。
Window对象的setTimeout()方法用于延迟代码的执行,该方法的基本语法格式如下:
window.setTimeout(code,delay);
其中,code用于指定要延迟执行的代码(通常为一个自定义的JavaScript函数);delay用于指定延迟时间(以毫秒为单位)。
通过wi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 javaweb 聊天室 毕业论文
![提示](https://static.bdocx.com/images/bang_tan.gif)