网页即时聊天工具的设计与实现毕业设计管理资料.docx
- 文档编号:6888337
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:38
- 大小:832.22KB
网页即时聊天工具的设计与实现毕业设计管理资料.docx
《网页即时聊天工具的设计与实现毕业设计管理资料.docx》由会员分享,可在线阅读,更多相关《网页即时聊天工具的设计与实现毕业设计管理资料.docx(38页珍藏版)》请在冰豆网上搜索。
网页即时聊天工具的设计与实现毕业设计管理资料
毕业设计
网页即时聊天工具的设计与实现
摘要
聊天工具作为计算机网络的应用之一,受到了用户的普遍爱好,它把人们带进了一个虚拟的网络世界,大大加深了人们之间的联系。
从单一的文本聊天,到语音聊天以及到现在的图像、视频聊天、及时短信的发送和在线游戏等功能的开发,已经大大的拓展了聊天工具的概念,它将会作为未来人们通过因特网相互联系和娱乐的主要平台。
此次设计从实际工程应用角度出发,以计算机网络原理为指导,结合当前网络中的一些常用技术,编程实现基于Java的网络聊天工具,涉及的内容包括web通信,身份验证和注册登陆,建立服务器,连接服务器以及数据接口实现等。
论文对当今聊天软件的发展情况、与该聊天软件相关的各种技术以及该聊天工具的实现做了一个详细的阐述。
论文主要分为四大版块。
第一大版块主要介绍了与设计有关的背景知识,相关技术,以及此次设计的意义所在;第二大版块主要对设计的可行性进行了分析,并对系统的具体实施做了铺垫;第三大版块为最重要版块,即项目的具体设计以及关键技术的运用与实现;第四大版块为演示版块,主要对作品进行展示。
关键字:
JavaAjaxMySQL网页聊天
学生承诺书
本人郑重承诺:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
作者签名:
年月日
1前言
项目开发的背景
InstantMessaging(即时通讯,实时传讯)的缩写是IM,这是一种可以让使用者在网络上建立某种私人聊天的实时通讯服务。
IM成为互联网最广泛的应用,事先谁也没有料到;IM成为互联网最赚钱的工具之一,这已是有目共睹的事实。
于是,引发了众多对手的角逐,这就注定了,未来的IM市场从此不再平静。
IM与互联网共生共荣,改变了现代人的沟通方式,已成为网民不可缺少的应用之一,不仅可以满足个体用户的不同需求,而且正在成为企业用户新的通讯渠道。
可以预见,IM将成为未来人类社会的最重要的通讯工具之一,借助互联网,不再需要通过电话,也能进行可视交流。
所以,未来IM市场竞争将更加激烈。
在中国IM市场上,从最初的单一文字通讯,到目前的语音视频沟通,无论是技术的进步,还是应用的推广,都预示着一种趋势,未来的即时通信还有很大拓展空间。
应当看到,这个空间将集中于应用与安全两大主题。
尽管市场IM众多,但QQ仍是一家独大,在即时通讯的竞争中已经稳居领导者的市场地位,占领国内市场70%以上的份额,创新能力极强。
MSN也已经稳定在办公型即时通讯领域的领导者定位,成为“白领”在线协同办公的工具。
在整个即时通讯领域,QQ、MSN目前保持了超过80%的市场份额。
目前,新浪UC、飞信、阿里旺旺、雅虎通、Skype、网易泡泡、搜狐搜Q、XX等都已入局。
针对国内即时通讯市场的最新调研结果。
调查显示,我国即时通讯市场无论是用户总人数、总注册账户数,还是活跃账户数、人均拥有即时通讯账户数,都创下了世界之最。
我们预计未来随着中国上网人口的增长,以及即时通讯软件的不断普及,即时通讯在线人数将保持快速增长。
中国网民已达1亿,IM产品越来越多样,群雄纷争,硝烟四起。
而IM产品中,开源的,不开源的,都不乏各自的特色。
现在的聊天工具已经比较成熟,个人无法与一个公司竞争,但是作为一个设计项目,目的简单明确,使此次设计的聊天工具能够实现,并完成目前一些同类聊天工具的大部分功能。
典型聊天工具的分析
图1QQ登陆界面
腾讯QQ是由深圳市腾讯计算机系统有限公司开发的一款基于Internet的即时通信(IM)软件,我们可以使用QQ和好友进行交流,信息和自定义图片或相片即时发送和接收,语音视频面对面聊天,功能非常全面。
此外QQ还具有与手机聊天、bp机网上寻呼、聊天室、点对点断点续传传输文件、共享文件、qq邮箱、备忘录、网络收藏夹、发送贺卡等功能。
QQ不仅仅是简单的即时通信软件,它与全国多家寻呼台、移动通信公司合作,实现传统的无线寻呼网、GSM移动电话的短消息互联,是国内最为流行功能最强的即时通信(IM)软件。
腾讯QQ支持在线聊天、即时传送视频、语音和文件等多种多样的功能。
同时,QQ还可以与移动通讯终端、IP电话网、无线寻呼等多种通讯方式相连,使QQ不仅仅是单纯意义的网络虚拟呼机,而是一种方便、实用、高效的即时通信工具。
QQ是现在在中国被使用次数最多的通讯工具。
图2UC登陆界面
UC是新浪网推出的一种网络即时聊天工具,功能根据网络技术的进步会不断提升,因此会有不同的版本。
擎旗技术的UcSTAR也完全纯软件实现的UC产品,根据客户的不同需求也定制了不同的版本满足客户的需求。
UcSTAR的简单功能介绍:
UcSTAR统一通信是擎旗技术推出的企业级融合通信平台;提供多种通讯手段(IM企业即时通信、文件、视频、语音、EMAIL、SMS短信中心、电话、VOIP、MSN/QQ互通、WEB呼叫中心),融合企业的多种应用系统紧密集成(OA、CMS>、ERP、EIP、Portal、网站、应用软件),交流对象和交流内容可管理,可控制,可扩展,轻松实现部署企业的统一工作平台。
持久集团化部署:
垂直管理,多帐号支持、S2S(分支互连)
人性化的应用:
我的部门、常用联系人、工作组支持、公告、备忘录、消息广播
互连互通功能:
QQ、MSN互通
多种客户端体验:
C/S客户端、WEB客户端、手机客户端
专业级的视频会议功能:
白板、文档共享、网页共享、程序共享,最大支持16路视频、9路混音
企业短信中心(SMS):
双向SMS互发,自定义短信群组
权限管理灵活,支持远程管理。
融合能力强大:
和OA、CMS、ERP、EIP、Portal、网站、应用软件无缝集成最大支持单个部署30万同时在线,组织结构部署人数不限制。
项目开发的主要内容
设计并实现基于Java的文本聊天程序,涉及的内容包括web通信,身份验证和注册登陆,建立服务器,连接服务器以及数据接口实现等。
此次设计为基于网页形式的聊天工具,该方案利用现在成熟的网页技术来实现聊天工具的开发。
该方案不再需要对底层网络通信进行开发,因为有HTTP的很好的支持。
因此工作重心转到网页的开发和服务器端的开发。
对于网页开发,,比较容易实现。
项目开发的意义
本项目是作为本科的毕业设计课题提出来的,它规模适中,适合于个人开发,能够锻炼同学的学习新知识能力,锻炼同学的编程能力,锻炼同学的软件工程的思维方式。
目前,计算机的发展离不开网络这一方向,网络将大大扩展计算机的功能,研究计算机在网络方面的技术以及应用,挖掘计算机的网络潜能,将能够大大提高我们对计算机的本身的认识,同时也能加深对计算机网络的认识。
网络的一大应用就是用于用户之间联络的聊天工具,通过对聊天工具的开发,我们将了解计算机如何通过网络相互通信以及在此相互通信的基础上实现的应用程序级的协议。
项目开发的过程
该项目的开发过程大致分为三个大的阶段:
第一个阶段是该软件的计划,分析和调研阶段,在这个阶段里,大致的学习了相关的技术,分析了相关的聊天软件的性能和功能。
第二阶段就是软件的设计与实现。
该软件的总体开发模式采用原型演化的开发模型,因为这个项目只是个人开发,而且先前对有些知识不是很了解,所有这些都是采用原型开发的必然因素。
现在该项目已经基本上完成了所有的要求,还扩展了一些功能。
第三个阶段是软件的测试和文档整理阶段。
完成了对软件的所有的功能的测试,即可整理软件的文档,写完论文。
软件采用原型的开发模型,分成登陆模块,信息通信模块等主要的几大模块。
2系统开发相关技术
Strutsmvc框架
Struts是Apache组织的一个项目,像其他的Apache组织的项目一样,它也是开放源码项目。
Struts是一个比较好的MVC框架提供了对开发MVC系统的底层支持,它采用的主要技术是Servlet,JSP和customtaglibrary。
图3模型-视图-控制器(MVC)示意图
JSP标记只解决了部分问题。
我们还得处理验证、流程控制和更新应用程序的状态等问题。
这正是模型-视图-控制器(MVC)发挥作用的地方。
MVC通过将问题分为三个类别来帮助解决单一模块方法所遇到的某些问题:
Model(模型)
模型包含应用程序的核心功能。
模型封装了应用程序的状态。
有时它包含的唯一功能就是状态。
它对视图或控制器一无所知。
View(视图)
视图提供模型的表示。
它是应用程序的外观。
视图可以访问模型的读方法,但不能访问写方法。
此外,它对控制器一无所知。
当更改模型时,视图应得到通知。
Controller(控制器)
控制器对用户的输入作出反应。
它创建并设置模型。
Ajax的定时刷新
利用XMLHTTP无刷新自动实时更新数据.传统上,我们浏览网页,.但是,.
10秒取一次数据.
客户端重新组织并显示数据.
前台显示.
functionGetResult()
{
/*
*---------------GetResult()-----------------
*GetResult()
*功能:
通过XMLHTTP发送请求,返回结果.
*参数:
str,字符串,发送条件.
*实例:
GetResult();
*author:
yoyo
*update:
2009-4-1119:
02
*---------------GetResult()-----------------
*/
varoBao=newActiveXObject("");
//特殊字符:
+,%,&,=,?
.
//Update:
2009-4-1112:
22
("POST","",false);
();
//服务器端处理返回的是经过escape编码的字符串.
varstrResult=unescape();
//将字符串分开.
vararrResult=("###");
RemoveRow();//删除以前的数据.
//将取得的字符串分开,并写入表格中.
for(vari=0;i<;i++)
{
arrTmp=arrResult[i].split("@@@");
num1=arrTmp[0];//字段num1的值
num2=arrTmp[1];//字段num2的值
row1=();
cell1=();
=num1;
cell2=();
=num2;
}
}
functionRemoveRow()
{
//保留第一行表头,其余数据均删除.
variRows=;
for(vari=0;i { (1); } } functionMyShow() { //2秒自动刷新一次,2秒取得一次数据. timer=("GetResult()",2000); }num1 num2
后台读取数据
<%@Language="JavaScript"%>
<%
functionOpenDB(sdbname)
{
/*
*---------------OpenDB(sdbname)-----------------
*OpenDB(sdbname)
*功能:
打开数据库sdbname,返回conn对象.
*参数:
sdbname,字符串,数据库名称.
*实例:
varconn=OpenDB("");
*author:
yoyo
*update:
2009-4-118:
18
*---------------OpenDB(sdbname)-----------------
*/
varconnstr="Provider=;DataSource="+(sdbname);
varconn=("");
(connstr);
returnconn;
}
varsResult=newArray();
varoConn=OpenDB("");
//特殊字符:
+,%,&,=,?
//所以服务器端先要经过unescape解码.
//Update:
2009-4-1112:
22
varsql="selectnum1,num2fromnumsorderbyid";
varrs=(sql);
while(!
)
{
//一条记录用"###""@@@"隔开.这是以只有两个列数据的情况.
sResult[]=rs("num1").Value+"@@@"+rs("num2").Value
();
}
//escape解决了XMLHTTP。
中文处理的问题.
(escape(("###")));
%>
表nums
id,自动编号
num1,文本
num2,文本
Json
JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。
易于人阅读和编写。
同时也易于机器解析和生成。
它基于JavaScript(StandardECMA-2623rdEdition-December1999)的一个子集。
尽管有许多宣传关于XML如何拥有跨平台,跨语言的优势,然而,除非应用于WebServices,否则,在普通的Web应用中,开发者经常为XML的解析伤透了脑筋,无论是服务器端生成或处理XML,还是客户端用JavaScript解析XML,都常常导致复杂的代码,极低的开发效率。
实际上,对于大多数Web应用来说,他们根本不需要复杂的XML来传输数据,XML的扩展性很少具有优势,许多AJAX应用甚至直接返回HTML片段来构建动态Web页面。
和返回XML并解析它相比,返回HTML片段大大降低了系统的复杂性,但同时缺少了一定的灵活性。
JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C,C++,C#,Java,JavaScript,Perl,Python等)。
这些特性使JSON成为理想的数据交换语言。
Jquery
jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTMLdocuments、events、实现动画效果,并且方便地为网站提供AJAX交互。
jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。
jQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。
Hibernate
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Hibernate的核心接口一共有5个,分别为:
Session、SessionFactory、Transaction、Query和Configuration。
这5个核心接口在任何开发中都会用到。
通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。
Css+div
CSS+DIV是网站标准(或称“WEB标准”)中常用的术语之一,通常为了说明与HTML网页设计语言中的表格(table)定位方式的区别,因为XHTML网站设计标准中,不再使用表格定位技术,而是采用css+div的方式实现各种定位。
CSS是英语CascadingStyleSheets(层叠样式表单)的缩写,它是一种用来表现HTML或XML等文件式样的计算机语言。
DIV元素是用来为HTML文档内大块(block-level)的内容提供结构和背景的元素。
DIV的起始标签和结束标签之间的所有内容都是用来构成这个块的,其中所包含元素的特性由DIV标签的属性来控制,或者是通过使用样式表格式化这个块来进行控制。
3系统开发
系统目标
利用web通信技术以及java程序语言实现一个能够文字聊天的一个聊天工具。
具体目标如下:
①注册,用户可以按照规定注册为会员。
②登录,用户可以以会员身份登录,只需登录前注册。
③修改资料,可以修改个人的资料,保存读取个人的资料。
④添加好友,添加私人聊天对象。
⑤删除好友,删除已添加的好友。
⑥群聊天,若干好友同时同一界面聊天。
⑦二人私聊,二人无干扰即时聊天。
⑧查询聊天记录。
可行性分析
经济可行性
开发该项目只需要一台PC电脑,其他所需资源在学校图书馆或者互联网上都可以找到,其他成本几乎可以忽略不计,所以资金要求很低,在经济上开发难度不高,不需要很高的经济投资。
运行可行性
一台安装了网卡并能运行windowsXP操作系统的计算机都可以运行此聊天工具,在网络技术如此发达的今天,不管从硬件运行可行性上,还是从市场运行可行性上来说,一款优秀的网页聊天工具都是值得期待的。
系统功能结构
此系统分为2个子系统:
数据库操作子系统,业务逻辑子系统。
数据库操作子系统负责数据持久化,主要是一些数据库的原子性操作,以面向对象的思想来实现。
使用hibernate作为orm映射框架,利用java5的泛型新特性,实现dao的泛化,大大减少了开发量。
业务逻辑子系统主要负责登陆,注册,信息交流等的业务逻辑操作和数据库事务管理,通过调用数据库操作子系统的dao程序实现数据的持久化,结合使用spring的自动事务管理来管理事务。
系统实施
开发环境
(1)硬件要求,安装了网卡,内存128MB以上,硬盘20GB以上。
(2)软件要求Windows,Apache服务程序,Mysql,Java编程语言,jdk。
数据库设计
根据系统分析,要实现数据库操作子系统和业务逻辑子系统的功能,需要创建5个表,基于网页的聊天工具所要求的数据库不会很复杂,主要是强调他们之间的关联性,能够达到信息同步,实现完整性约束。
这5个表分别是:
user表,messagesmapping表,friendsrequest表,message表,friendsmapping表。
user表如下图:
图4User表
User表是用来存放用户个人信息的,id字段是主键,不代表任何实际个人信息,name是用户名,password是登录密码。
friendsmapping表如下图:
图5friendsmapping表
Friendsmapping表是用来存放好友关系的,userid和friendid联合作为表的主键,一行数据确定两个好友的关系。
Idx是在Hibernate生成List属性的时候用来确定顺序的时候用的,没有实际意义。
friendsrequest表如下图:
图6friendsrequest表
Friendsrequest表是用来存放好友邀请的表,requestUser是发出邀请的用户id。
message表如下图:
图7message表
Message表是用来保存消息和聊天记录的表,userFrom是消息发送者id,userTo是消息接受者的id,text是消息内容,checked是标志消息是否已经被查收的字段。
Messagesmapping表如下图:
图8messagemapping表
Messagesmapping表是用来确定消息和用户关系的表,hibernate通过这张表来组装user对象的消息集合。
数据库操作子系统
在数据库操作子系统中,分别设计了数据库操作通用模块DaoImpl为抽象基类,信息持久化模块MessageDaoImpl,用户持久化模块UserDaoImpl,而Dao,MessageDao,UserDao分别是以上三个子模块的对应接口。
类图如下:
图9数据库操作子系统类图
MessageDaoImpl和UserDaoImpl都是DaoImpl的子类。
数据库操作通用模块DaoImpl的实现代码如下:
publicclassDaoImpl
protectedSessionFactorysessionFactory;
privateClass
>entityCls;
publicDaoImpl(){
entityCls=(Class
>)((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
@Override
publicvoidsetSessionFactory(SessionFactorysessionFactory){
=sessionFactory;
}
@Override
publicvoiddelete(Tentity){
Sessionsession=();
(entity);
}
@SuppressWarnings("unchecked")
@Override
publicTfindById(Serializableid){
Sessionsession=();
return(T)(entityCls,id);
}
@SuppressWarnings("unchecked")
@Override
publicList
Sessionsession=();
List
returnlist;
}
@Override
publicIntegergetCountOfAll(){
Sessionsession=();
Integercount=(Integer)(entityCls).setProjection(()).uniqueResult();
returncount!
=null?
count:
0;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网页 即时 聊天工具 设计 实现 毕业设计 管理 资料