基于javaweb聊天室毕业论文.docx

上传人:b****4 文档编号:4052187 上传时间:2023-05-06 格式:DOCX 页数:33 大小:340.73KB
下载 相关 举报
基于javaweb聊天室毕业论文.docx_第1页
第1页 / 共33页
基于javaweb聊天室毕业论文.docx_第2页
第2页 / 共33页
基于javaweb聊天室毕业论文.docx_第3页
第3页 / 共33页
基于javaweb聊天室毕业论文.docx_第4页
第4页 / 共33页
基于javaweb聊天室毕业论文.docx_第5页
第5页 / 共33页
基于javaweb聊天室毕业论文.docx_第6页
第6页 / 共33页
基于javaweb聊天室毕业论文.docx_第7页
第7页 / 共33页
基于javaweb聊天室毕业论文.docx_第8页
第8页 / 共33页
基于javaweb聊天室毕业论文.docx_第9页
第9页 / 共33页
基于javaweb聊天室毕业论文.docx_第10页
第10页 / 共33页
基于javaweb聊天室毕业论文.docx_第11页
第11页 / 共33页
基于javaweb聊天室毕业论文.docx_第12页
第12页 / 共33页
基于javaweb聊天室毕业论文.docx_第13页
第13页 / 共33页
基于javaweb聊天室毕业论文.docx_第14页
第14页 / 共33页
基于javaweb聊天室毕业论文.docx_第15页
第15页 / 共33页
基于javaweb聊天室毕业论文.docx_第16页
第16页 / 共33页
基于javaweb聊天室毕业论文.docx_第17页
第17页 / 共33页
基于javaweb聊天室毕业论文.docx_第18页
第18页 / 共33页
基于javaweb聊天室毕业论文.docx_第19页
第19页 / 共33页
基于javaweb聊天室毕业论文.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于javaweb聊天室毕业论文.docx

《基于javaweb聊天室毕业论文.docx》由会员分享,可在线阅读,更多相关《基于javaweb聊天室毕业论文.docx(33页珍藏版)》请在冰点文库上搜索。

基于javaweb聊天室毕业论文.docx

基于javaweb聊天室毕业论文

基于java-web聊天室毕业论文

本科生毕业论文(设计)

 

题目:

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

姓名:

陈义旺

学院:

理学院

专业:

信息与计算科学

班级:

信科092

学号:

23109223

指导教师:

李爱萍职称:

副教授

2013年5月27日

南京农业大学教务处制

 

theattractivenessofthewebsite,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()方法发送聊天内容。

关键代码如下:

[5]

4.3实现私聊

所谓私聊就是只有发言人和接收人可以看到该信息,其他用户不能看到该信息,这样可以保证用户间的悄悄话不被其他用户所看到。

4.3.1在保存聊天信息的XML文件中设置一个isprivate节点,用于记录聊天信息是否为私聊信息。

isPrivate节点的值为true或false,值为true时表示是私聊信息,否则表示不是私聊信息。

添加私聊信息在XML文件中的显示代码如下:

[5]

wgh

微笑着

无语

<fontcolor=”>l和你说一件事呀?

</font>”

2013-3-1515:

51:

41

true

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

+""+face

+"对["+to

+"]说:

"+content

+" ["

+sendTime+"]
";

}

}

4.4滚屏显示

在实现聊天时,为了让用户可以及时看到最新发言,需要对聊天内容进行滚屏显示,同时为了让用户可以看到全部聊天内容,还需要提供不滚屏显示的功能。

实现滚屏显示时,可以分为整个窗口的滚动和页面中元素的滚动两种情况:

4.4.1对整个窗口的内容进行滚动

滚动整个窗口,即对滚动条进行定位,可以通过sroll()函数的语法如下:

window.scroll(x,y)

其中,参数x表示滚动条水平位置的坐标;参数y表示滚动条垂直位置的坐标。

另外将滚动条置底,只要将y的值设置的大一些即可,关键代码如下:

[6]

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()用于控制是否滚屏,在该方法中,首先判断添加的复选框是否为选中状态,如果不是则表示滚屏,否则将设置聊天内容的

标记的scrollTop属性等于它的滚动高度乘以2。

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用于指定延迟时间(以毫秒为单位)。

通过window对象的setTimeout()方法实现定时踢出指定用户的关键代码:

Timer=window.setTimeout(“Exit()”,<%=maxTime%>);

上述的代码实现了定时踢出长时间不发言的用户,如果想实现踢出长时间不发言的用户,还需要在用户发言后,将上述的计时器重新计时。

关键代码如下:

clearTimeout(timer);

timer=window.setTimeout(“Exit()”,<%=maxTime%>)[9];

注意在实现用户发言的方法中,一定要调用此方法,否则不会更新用户的发言时间,造成即使用户发言了还是被踢出了。

4.6敏感词的自动屏蔽

在以QQ聊天室为首的大多数聊天室都没有屏蔽敏感词汇功能,为了营造良好的网络文明用语环境,本聊天室特意增设此功能。

用户进入聊天室就会看到有醒目的提醒,提醒大家文明聊天,不要说一些的敏感的字眼。

而一旦有用户说了敏感的字眼,系统就要自动屏蔽掉。

在服务器数据库将那些敏感的字放进去,一旦用户聊天时,系统自动将用户的聊天的词语在数据库表中去查找,一旦有敏感的词,通过控制器Servlet的内容过滤修改输出的的字符串,改为“***”。

关键代码如下:

for(Stringsensiti:

sensities){

intpreIndex=-1;

if((preIndex=infro.indexOf(sensiti))!

=-1){

intlastIndex=preIndex+sensiti.length();

updatedInfor=infro.substring(0,preIndex)+"***"

+infro.substring(lastIndex)[8];

}

}

5系统程序开发

5.1用户模块

当用户访问聊天室时,首先进入的是登录聊天室页面。

如果用户没有账号,则可以点击页面的注册链接,进入到注册页面;如果用户之前已经登录过,则直接输入用户名、密码,进行登录。

5.1.1用户注册

当用户进入到注册页面后,提示用户填写详细信息,点击“注册”按钮后,系统开始判断用户名、密码、确认密码、年龄和性别是否非法,判断用户名是否已经被注册,如果都能验证通过才允许用户注册成功。

下面是注册界面和详细描述:

5.1.1.1设计注册聊天室页面,该页面用于新用户注册关键代码如下:

action=register">[9]

用户名:

密码:

确认密码:

年龄:

性别:

id="error">${error}[10]

已有账号,登录!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2