




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、南 昌 工 程 学 院毕毕 业业 设设 计计 (论论 文文) 信息工程 系(院) 08 计算机网络 专业毕业设计(论文)题目 聊天工具设计与实现 学生姓名 周志冬 班 级 08 计算机网络技术 学 号 2008011224 指导教师 邓少波 完成日期 2011 年 5 月 30 日聊天工具设计与实现聊天工具设计与实现design and implementation of chat总计 毕业设计(论文) 41 页 表 格 2 个插 图 13 幅摘 要越来越多的人开始通过网络进行及时的沟通和交流,聊天室应用系统是一个比较好的人们进行实时交互的工具,而最常用的就是完全基于 www 的方式,用户不需
2、要任何定制的客户端,只需要通过访问指定的 url 就可以登入聊天室和其他在线的用户进行沟通。本系统主要具有用户注册、用户登录验证、用户在线显示,用户资料查看与修改、实时聊天等功能。在实现实时显示聊天内容功能时,运用了 ajax 技术。使用 ajax 的异步模式,浏览器就不必等用户请求操作,也不必更新整个窗口就可以显示新获取的数据。只要来回传送采用 xml 格式的数据,在浏览器里面运行的 javascript 代码就可以与服务器进行联系。javascript 代码还可以把样式表加到检索到的数据上,然后在现有网页的聊天内容显示区加以显示。本系统采用 struts、jsp 作为开发工具,后台数据库采
3、用 sql server 2000 数据库设计,利用基于 jdbc 的 odbc 数据库访问技术实现对数据库的各种管理操作,实现用户登录验证的功能、用户聊天的功能和显示在线聊天用户信息等功能。关键词关键词: 聊天室 jdbc ajax application session abstractmore and more people begin to through the network to communicate and exchange, chat application system is a good people in real time, and the interactive
4、tool is the most commonly used is completely based on www way, users dont need any custom client, need only through the visit the url is designated can log in chat rooms and other online users to communicate. this system mainly has the user registration, user login validation, users online shows, th
5、e user data to check and modification, real-time chat etc. function. to realize real-time display in chat function as the content, using ajax technology. with ajax asynchronous mode of, the browser will dont need to wait for users request operation, also dont have to update the whole window can show
6、 new data obtained. as long as the transfer of the back and forth an xml format data in the browser, operates the javascript code can to contact a web server. javascript code can also add to the style sheet to retrieve data, and then in the existing web chat show area to show the content. the system
7、 uses struts, jsp as development tools, the backend database using sql server 2000 database design, use the odbc database access based on jdbc database technology to achieve various management operation, realize user login the verification of the function, the function and user chat show chat online
8、 user information etc. function. key words: ajax; application; session; jdbc; chat room 目目 录录摘摘 要要.iabstract.ii目目 录录.iii第一章第一章 绪论绪论.11.1 设计的研究意义.11.2 研究概况及发展趋势.1第二章第二章 系统设计基本原理与技术系统设计基本原理与技术.32.1 sql server 200 sql 简介.32.1.2 sql 数据库体系结构.32.1.3 sql 的组成.42.2 struts1.x简介.42.3 关键技术.72.3.1 ajax技术
9、.72.3.2 application对象.102.3.3 session对象.11第三章第三章 需求分析需求分析.133.1 需求分析.13第四章第四章 系统概要设计系统概要设计.154.1 系统功能模块图.154.2 系统流程图.17第五章第五章 详细设计详细设计.195.1 数据库模块设计.195.2 用户登录模块设计.205.3 用户注册模块设计.235.4 显示在线用户模块设计.265.5 用户退出模块设计.27第六章第六章 系统的测试和维护系统的测试和维护.296.1 系统调试与测试的作用和意义.296.2 系统调试与测试的目的和原则.296.3 系统的调试.296.4 在线聊天室
10、测试.29结结 束束 语语.33谢谢 辞辞.35参考文献参考文献.37第一章 绪论1.1 设计的研究意义设计的研究意义21 世纪是信息社会的时代,科学和技术和社会的发展正在迎接这时代的到来,当前信息网络得到飞速的发展,尤其是计算机和通信技术的发展和结合,改变了人民的生活、学习和工作方式,减轻工作的负担,提高生活水平,推动社会的进步。当前电子商务、erp、wap 等技术正深深的影响着我们。随着网络的普及,在线技术支持、在线交流和在线服务等逐渐在各网站上流行。其中,在线交流提供了客服与用户及用户间直接对话的平台。如今,像 qq、雅虎通这些传统的 c/s 结构的实时通讯软件已经非常成熟,像 web
11、qq 这样 b/s 结构的在线聊天平台正以其轻盈、便捷的优势成为近几年实时通讯系统发展的一种趋势。对于传统 c/s 结构的在线聊天系统,需要用户安装客户端软件,对于一次性访问或者需要在短时间内获取信息的用户来说,这种等待是无法忍耐的。此外,客户端软件存在升级维护等问题是用户所不愿意等待的。b/s 结构与其不同,它不需要安装任何软件,直接使用浏览器即可,因为它轻盈、便捷的优势,得到了更多用户的偏好。1.21.2 研究概况及发展趋势研究概况及发展趋势越来越多的人开始通过网络进行及时的沟通和交流,聊天室应用系统是一个比较好的人们进行实时交互的工具,而最常用的就是完全基于 www 的方式,用户不需要任
12、何定制的客户端,只需要通过访问指定的 url 就可以登入聊天室和其他在线的用户进行沟通。 基于 www 网站的聊天,典型的有以色列的一家公司推出的新的聊天程序,该聊天系统的特点是用户注册登入以后,把用户浏览页面的情况实时的发送到相关的服务器上,这样,服务器就可以知道当前有多少用户在某一个特定的网站上。每当用户从一个网站切换到 gooey,一个网站的时候,聊天系统就会告诉用户在这个网站上同时还有哪些用户也正在浏览,这样,所有在同一个网站上面的用户就可以实时的进行沟通。基于 web 的聊天服务器系统的最大的优点是完全基于浏览器和 web 服务器的,所以用户不需要任何其他的客户端的工具,而且由于浏览
13、器完全支持多媒体形式,所以传输的内容可以非常丰富多彩。现在随着发展出现了视频聊天室、语音聊天室、动画聊天室等聊天室。这里介绍一种复合天室: 典型代表是 uc 聊天室,它打破了传统 im 软件主要用于文字通讯的单一模式,将有声有色、图文并茂的场景融入聊天模式,加之视频电话、可断点续传的文件传输、消息群发功能和在线游戏功能以及同学录(团体)等有机结合,形成一个完整的网上即时通讯娱乐平台,带来聊天新感觉。采用 j2ee 技术,用 jsp、java 结合 ajax 技术实现本聊天室。聊天室是基于 web的聊天室,它不需要安装专门的软件,web 浏览器就可以使用聊天服务;它集成在 web服务器中,不需额
14、外的硬件支持,便于广大中小型客户建设和使用。web 聊天室的主要特点构建一个跨平台的 web 聊天室引擎系统,可支持行在任何操作系统上。用户不需要任何定制的客户端,只需要通过问指定的 url 就可以登入聊天室和其他在线的用户进行沟通。第二章 系统设计基本原理与技术2.12.1 sqlsql serverserver 200020002.1.1 sql 简介 sql 全称是“结构化查询语言(structured query language)” 。最早是 ibm 的圣约瑟研究实验室为其关系数据库管理系统 system r 开发的一种查询语言,它的前身是square 语言。sql 语言结构简洁,功
15、能强大,简单易学,所以自从 ibm 公司 1981 年推出以来,sql 语言得到了广泛的应用。目前,sql 语言已被确定为关系数据库系统的国际标准,被绝大多数商品化关系数据库系统采用,如 oracle 、sybase、db2、informix、sql server 这些数据库管理系统都支持 sql 语言作为查询语言。结构化查询语言 sql 是一种介于关系代数与关系演算之间的语言,其功能包括查询、操纵、定义和控制四个方面,是一个通用的功能极强的关系数据库标准语言。在 sql 语言中不需要告诉 sql 如何访问数据库,只要告诉 sql 需要数据库做什么。2.1.2 sql 数据库体系结构sql 数
16、据库的体系结构基本上也是三级模式。sql 术语与传统的关系模型术语不同。在 sql 中,外模式对应于视图,模式对应于基本表,元组称为“行” ,属性称为“列” 。内模式对应于存储文件。 sql 数据库的体系结构特征: 一个 sql 模式(schema)是表和约束的集合。 一个表(table)是行(row)的集合,每行是列(column)的序列,每列对应一个数据项。 个表可以是一个基本表,也可以是一个视图,基本表是实际存储在数据库中的表。视图是从基本表或其他视图中导出的表,它本身不独立存储在数据库中,也就是说数据库中只存放视图的定义而不存放视图的数据,视图是一个虚表。一个基本表可以跨一个或多个存储
17、文件,一个存储文件也可存放一个或多个基本表,一个表可以带若干索引,索引也存放在存储文件中。每个存储文件与外部存储器上一个物理文件对应。存储文件的逻辑结构组成了关系数据库的内模式。用户可以用 sql 语句对视图和基本表进行查询等操作。在用户看来,视图和基本表是一样的,都是关系(即表格)。sql 用户可以是应用程序,也可以是终端用户。sql 语句可嵌入在宿主语言的程序中使用;sql 语言也能作为独立的用户接口,供交互环境下的终端用户使用。2.1.3 sql 的组成sql 主要分成四个部分:数据定义:这一部分也称为“ddl” ,用于定义 sql 模式、基本表、视图和索引。数据操纵:这一部分也称为“d
18、ml”,数据操纵分成数据查询和数据更新两类,其中数据更新又分成插入、删除和修改三种操作。数据控制:这一部分也称为“dcl” 。数据控制包括对基本表和视图的授权,完整性规则的描述,事务控制语句等。2.22.2 struts1.xstruts1.x 简介简介struts 最早是作为 apache jakarta 项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高 javaserver pages 、servlet、标签库以及面向对象的技术水准。struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。这个框架之所以叫struts,是为了提醒我们记住那些支撑我们房屋,建筑,桥梁,甚至
19、我们踩高跷时候的基础支撑。这也是一个解释 struts 在开发 web 应用程序中所扮演的角色的精彩描述。当建立一个物理建筑时,建筑工程师使用支柱为建筑的每一层提供支持。同样,软件工程师使用 struts为业务应用的每一层提供支持。它的目的是为了帮助我们减少在运用 mvc 设计模型来开发 web 应用的时间。我们仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。如果想混合使用 servlets 和 jsp 的优点来建立可扩展的应用,struts 是一个不错的选择。 早期 smalltalk 程序语言便采用了 mvc(model-view -controller) 模式( patte
20、rns ) 以增加程序代码弹性,mvc 模式将程序代码整理切割为三部份,model 部分是业务与应用领域( business domain) 相关逻辑、管理状态之对象,controller 部分接收来自 view 所输入的资料并与 model 部分互动,是业务流程控制( flow control) 之处,view 部分则负责展现资料、接收使用者输入资料。在 java 应用中,jfc/swing、awt、jsp 皆是可用作view 之技术规格,而 javabean 与 enterprise javabean 规格则可用于 model 程序代码,一旦应用程序以 mvc 模式加以适当的分割,mode
21、l 部分程序代码可在不同使用者接口外观的应用程序中重复使用。 随着 jsp 与 servlet 技术大量应用于以 web 为基础的应用程序,java 开发人员群体认为应以较佳之模式以提升 web 应用程序之可维护性与重复使用性。早期 jsp 规格书中曾列举两种可行之 jsp 应用架构,分别为 model1 与 model 2。 在 model 1 架构中,jsp 直接处理 web 浏览器送来之请求( request ),并辅以javabean 处理应用相关逻辑。model 1 架构单纯编写比较容易,但在 model 1 中 jsp 可能同时肩负 view 与 controller 角色,两类程
22、序代码有可能混杂而不易维护。而 model 2 中将 servlet 纳入架构中扮演前端 controller 角色,将 web 浏览器送出之请求集中送至servlet ,servlet 可集中管理使用者登入、权限控制、多国语言转换等前置处理,再视需求转向给对应之 jsp 处理。model 2 中采用了较佳之 mvc 模式,但增加了编写复杂度。 struts 是 apache 软件基金下 jakarta 项目的一部分。除 struts 之外,还有其他成功的开源产品,包括 tomcat, ant 和 velocity。2000 年 craig r. mcclanahan 先生贡献了他编写的 js
23、p model 2 架构之 application framework 原始程序代码给 apache 基金会,成为 apache jakarta 计划 struts framework 前身。 开始的代码基础从 2000 年 5 月开始开发,直到 2001 年 6 月,1.0 版本发布。有 30 多个开发者参与进来,并有数千人参与到讨论组中。struts 代码基础由一个志愿的commnitter 团队来管理。到 2002 年,struts 小组共有 9 个志愿 commnitter。 struts 框架的主要架构设计和开发者是 craig r.mcclanahan。craig 也是 tomca
24、t 4的主要架构师,以及 java web services developer pack 的主要架构师和实现者。他现在是sun 的 javaserver faces (jsr-127) 以及 j2ee 平台的 web 层架构的规范领导。craig r. mcclanahan 先生是 jcp expertgroup 成员之一,曾参与 jsp 规格制定与 tomcat 4 之编写,因此 struts framework 广受 java 开发人员群体所重视。borland 自 2002 年底开始于开发工具 jbuilder 中支持 struts framework。 struts 是 apache
25、 基金会 jakarta 项目组的一个 open source 项目,它采用 mvc 模式,能够很好地帮助 java 开发者利用 j2ee 开发 web 应用。和其他的 java 架构一样,struts 也是面向对象设计,将 mvc 模式分离显示逻辑和业务逻辑的能力发挥得淋漓尽致。structs 框架的核心是一个弹性的控制层,基于如 java servlets,javabeans,resourcebundles 与 xml 等标准技术,以及 jakarta commons 的一些类库。struts 由一组相互协作的类(组件) 、servlet 以及 jsp tag lib 组成。基于 stru
26、ts 构架的 web 应用程序基本上符合 jsp model2 的设计标准,可以说是一个传统 mvc 设计模式的一种变化类型。 struts 最早是作为 apache jakarta 项目的组成部分问世运作。项目的创立者希望通过对该项目的研究,改进和提高 java server pages、servlet、标签库以及面向对象的技术水准。 struts 跟 tomcat、turbine 等诸多 apache 项目一样,是开源软件,这是它的一大优点,使开发者能更深入的了解其内部实现机制。 除此之外,struts 的优点主要集中体现在两个方面:taglib 和页面导航。taglib 是struts
27、的标记库,灵活运用,能大大提高开发效率。另外,就目前国内的 jsp 开发者而言,除了使用 jsp 自带的常用标记外,很少开发自己的标记,或许 struts 是一个很好的起点。 关于页面导航,我认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。 struts 继承了 mvc 的各项特性,并根据 j2ee 的特点,做了相应的变化与扩展。 struts 对 model,view 和 controller 都提供了对应的组件。 actions
28、ervlet,这个类是 struts 的核心控制器,负责拦截来自用户的请求。 action,这个类通常由用户提供,该控制器负责接收来自 actionservlet 的请求,并根据该请求调用模型的业务逻辑方法处理请求,并将处理结果返回给 jsp 页面显示。 model 部分,由 javabean 组成,actionform 用于封装用户的请求参数,封装成actionform 对象,该对象被 actionservlet 转发给 action,action 根据 actionform 里面的请求参数处理用户的请求。 javabean 则封装了底层的业务逻辑,包括数据库访问等。 view 部分,该部分
29、采用 jsp 实现。 struts 提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与 model 的有效交互,并增加了现实功能。对应上图的 jsp 部分。 controller 组件,controller 组件有两个部分组成系统核心控制器,业务逻辑控制器。 系统核心控制器,对应上图的 actionservlet。该控制器由 struts 框架提供,继承httpservlet 类,因此可以配置成标注的 servlet。该控制器负责拦截所有的 http 请求,然后根据用户请求决定是否要转给业务逻辑控制器。 业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是调用 m
30、odel 来完成处理。对应 action 部分。 struts 框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于 mvc 的web 应用程序的开发。 框架中所使用的组件: actionservlet 控制器 actionform 显示模块数据 actionmapping 帮助控制器将请求映射到操作 actionforward 用来指示操作转移的对象2.32.3 关键技术关键技术2.3.1 ajax 技术web 开发领域的最新时髦术语其实质是“旧貌换新颜” 。ajax(asynchronous javascript and xml)是结合了 java 技术、xml 以及 javascr
31、ipt等编程技术,可以让开发人员构建基于 java 技术的 web 应用,并打破了使用页面重载的惯例。ajax 是使用客户端脚本与 web 服务器交换数据的 web 应用开发方法。这样,web页面不用打断交互流程进行重新加裁,就可以动态地更新。使用 ajax,用户可以创建接近本地桌面应用的直接、高可用、更丰富、更动态的 web 用户界面。异步 javascript 和 xml(ajax)不是什么新技术,而是指这样一种方法:使用几种现有技术包括级联样式表(css) 、javascript、xhtml、xml 和可扩展样式语言转换(xslt) ,开发外观及操作类似桌面软件的 web 应用软件。实现
32、 ajax 的所有组件都已存在了许多年。adaptive path 的用户体验战略部门主管兼创办合伙人 jesse james garrett今年 2 月发表在 adaptive path 网站上的一篇文章中杜撰了这个术语。异步这个词是指 ajax 应用软件与主机服务器进行联系的方式。如果使用旧模式,每当用户执行某种操作、向服务器请求获得新数据,web 浏览器就会更新当前窗口。如果使用 ajax 的异步模式,浏览器就不必等用户请求操作,也不必更新整个窗口就可以显示新获取的数据。只要来回传送采用 xml 格式的数据,在浏览器里面运行的javascript 代码就可以与服务器进行联系。javasc
33、ript 代码还可以把样式表加到检索到的数据上,然后在现有网页的某个部分加以显示。在面向消费者的诸多应用当中,google 的 gmail 和 google maps 就是最常见的例子。在 gmail 当中,ajax 负责如何开启线程会话,以显示不同邮件的文本内容。而在 maps当中,ajax 允许用户以一种似乎无缝的方式拖拉及滚动地图。还有雅虎的 flickr 像片共享应用和亚马逊网站的 a9 搜索引擎。另外,雅虎新的 web邮件服务可能很快就会吸引 ajax 支持者的莫大关注,这项服务基于雅虎收购 oddpost 后得到的技术。这些 ui 都充分地使用了后台通道,也被一些开发者称为“web
34、 2.0” ,并导致了大家对 ajax 应用兴趣的猛涨。然而,ajax 应用软件厂商越来越把目光瞄准了企业。譬如说,scalix 的 web access电子邮件应用软件其实比微软 outlook 自己的 web 邮件界面更像 outlook。不过 ajax 应用软件的适用领域具有一定的局限性。因为它们利用了一些最新的web 技术,所以只能在某些 web 浏览器里面运行不过 ajax 适用的浏览器正越来越多。随着 ajax 应用程序的不断扩展,将会有越来越多的 javascript 代码应用到 ajax 中,这可能导致许多意想不到的问题。因此有必要对 ajax 代码进行重构。下面将介绍实现aj
35、ax 重构的基本步骤。创建一个单独的 js 文件,名称为 ajaxrequest.js,并且在该文件中编写重构 ajax 所需的代码,具体代码如下:var net=new object(); /定义一个全局变量/编写构造函数net.ajaxrequest=function(url,onload,onerror,method,params) this.req=null; this.onload=onload; this.onerror=(onerror) ? onerror : this.defaulterror; this.loaddate(url,method,params);/编写用于初始
36、化xmlhttprequest对象并指定处理函数,最后发送http请求的方法net.ajaxrtotype.loaddate=function(url,method,params) if (!method) method=get; if (window.xmlhttprequest) this.req=new xmlhttprequest(); else if (window.activexobject) this.req=new activexobject(microsoft.xmlhttp); if (this.req) try var loader=this; thi
37、s.req.onreadystatechange=function() net.ajaxrequest.onreadystate.call(loader); this.req.open(method,url,true); if(method=post)this.req.setrequestheader(content-type,application/x-www-form-urlencoded); this.req.send(params); catch (err) this.onerror.call(this); /重构回调函数net.ajaxrequest.onreadystate=fun
38、ction() var req=this.req; var ready=req.readystate; if (ready=4) if (req.status=200 ) this.onload.call(this); else this.onerror.call(this);/重构默认的错误处理函数net.ajaxrtotype.defaulterror=function() alert(错误数据nn回调状态:+this.req.readystate+n状态: +this.req.status);在需要应用 ajax 的页面中应用以下的语句包含 js 文件“ajaxreq
39、uest.js” 。在应用 ajax 的页面中编写错误处理的方法、实例化 ajax 对象的方法和回调函数,具体代码如下:/*错误处理的方法*/function onerror()alert(您的操作有误!);/*实例化 ajax 对象的方法*/function getcheckcode1(showcheckcode,checkcode)var loader1=new net.ajaxrequest(getpicturecheckcode.jsp?nocache=+new date().gettime(),deal_getcheckcode,onerror,get);showcheckcode.
40、style.display=;checkcode.focus();/*回调函数*/function deal_getcheckcode()document.getelementbyid(showcheckcode).innerhtml=this.req.responsetext;2.3.2 application 对象application 对象是一个环境上下文(context)对象,用于保存应用程序中的所有公有数据,服务器启动并且自动创建 application 对象以后,只要没有关闭服务器,application 对象将一直存在,所有用户可以共享 application 对象。applic
41、ation 对象为 jsp 提供的内置对象,可以直接使用,但是在 servlet 中,需要通过以下代码来获取该对象的实例,才可以使用该对象。servletcontext application = getservletcontext();application 对象提供了很多方法,本实例中,只使用了 setattribute()方法和getattribute()方法。首先来介绍 setattribute()方法,该方法用于将一个对象绑定到一个属性上,该属性在整个 servlet 上下文中都适用。setattribute()方法的语法格式如下:application.setattribute(s
42、tring name,object object);name:用于指定一个属性名,该属性在整个 servlet 上下文中都适用。object:用于指定属性值。例如,在本实例中,设置保存群聊信息的 application 对象的属性的具体代码如下:application.setattribute(message, sourcemessage);下面再来介绍 getattribute()方法,该方法用于返回 application 对象的指定属性的值。如果不存在该属性,则返回 null。getattribute()方法的基本语法如下:application. getattribute(string
43、 name);name:用于指定一个属性名。例如,在本实例中,设置获取群聊信息的 application 对象的属性的具体代码如下:string sourcemessage = application.getattribute(message).tostring();2.3.3 session 对象session 对象是十分重要的一个 jsp 内置对象,它可以用来在每一个用户之间分别保存用户信息,这与 application 对象不同。application 对象用于在多个程序之间保存信息,application 对象只有一个,它可以绑定若干个相当于全局变量的参数或者 java 对象,每个js
44、p 程序所访问的都是 application 对象的一个同步副本,都是一样的,而且 application 对象的生命周期贯穿服务器的整个运行周期。但是,服务器上的 session 对象却可以有多个,不同的用户所面临的 session 对象一般来说是不同的,当用户登录网站,系统将为他生成一个独一无二的 session 对象,用以记录该用户的个人信息,一旦该用户退出网站,那么该 session 对象将会被注销。session 对象也可以绑定若干个参数或者 java 对象,这些参数或者 java 对象就相当于局部变量,不同 session 对象间的同名变量是不会相互干扰的。应用 session 对
45、象的功能,可以十分简单地实现购物车等功能。但是我们仅能获取原 session 对象的一个同步副本,这一点上,session 对象和application 对象是一致的。application 对象和 session 对象并非不能被创建,但是,他们只能够由 jsp 引擎自动创建。application 对象在服务器启动的时候被创建,在服务器关闭时被删除,session 对象在新的 http 连接产生时被创建,在 http 连接中断或者超时的时候被删除,同时,jsp 程序员也可以调用 invalidate()方法强行删除 session 对象,中断http 连接。这是 application 对象
46、和 session 对象的不同点之一。在本实例中,设置保存私聊信息的 session 对象的属性的具体代码如下:usersession.setattribute(ownmessage, listsession);第三章 需求分析3.13.1 需求分析需求分析这是一个具有最简单功能的聊天室。通过该聊天室,用户首先应要进行注册获得登录账号后,才可以用获得的账号和密码进入聊天室,用户可以在聊天室中发送群聊信息,可以和指定的聊天对象用户私聊,还可以对发送的信息进行表情、颜色等方面的限制。系统应具有自动把在线但不发言的时间超过系统设置的时间的用户踢出聊天室和的功能,应具有当有新用户进入聊天室时,实时更新
47、在线用户的功能,还应具有查看在线用户基本的基本资料和查看自己基本的基本资料及修改自己的基本资料的功能。聊天室的特点就是要求能够实时显示出聊天者所谈的内容。无论是私聊或群聊,都可以在短时间内立刻看到其他聊天者的发言。作为用户喜欢的 web 应用程序,除了具有能够实时显示出聊天者所谈论的内容外,还应具有以多种方式发布信息的功能。jsp 、ajax 和 struts 相结合,就可以快速地创建和显示 web 页面的动态内容。总的来说,本聊天室主要实现了以下的功能:用户注册帐号,填写个人基本资料将用户的基本资料保存到数据库用户输入帐号,密码登录聊天室用户可以修改聊天语句的颜色,选择说话表情用户聊天室可以
48、选择聊天对象(私聊,群聊)聊天室不断地对 application 和 session 中的内容进行刷新、读取实时更新在线的用户查看在线用户的基本资料查看并可修改自己的基本资料用户退出聊天室图 3-1 用户 e-r 图图 3-2 在线用户信息 e-r 图第四章 系统概要设计4.14.1 系统功能模块图系统功能模块图图 4-1 系统功能模块图本系统主要包括以下功能:(1) 用户注册,在首页点击“账号注册”按钮,转到用户注册页面,填写相应的信息。(2) 用户登录,在首页填写账号和密码,点击“登录”按钮,进入聊天室。(3) 信息显示,用户成功登录后,即可显示在线用户、群聊内容和私聊内容(4) 用户选择
49、相应的聊天对象,即可聊天,群聊或私聊。(5) 用户可以查看在线用户的基本资料。(6) 用户同样也可以查看个人的基本资料并且可对个人的基本资料修改。(7) 用户聊天内容发送,在用户选择好聊天对象、表情、字体颜色及聊天内容后,点击“发送”按钮(或按键“ctrl + enter”键) ,即可将聊天内容发送出去。(8) 用户退出聊天室,点击“退出聊天室”按钮,即可退出,聊天室。4.24.2 系统流程图系统流程图图 4-2 系统流程图开始用户登陆帐号判断帐号或密码错误密码提示重新输入或注册帐号正确张却显示在线用户选择聊天对象选择表情选择字体颜色查看在线用户资料修改个人资料查看个人资料显示聊天内容是否退出
50、结束 (1) 在登录首页,输入账号和密码,点击“登录”按钮,若账号或密码错误,将提示“登录失败,账号、密码错误或注册账号” ;若是账号和密码正确,将成功进入聊天室,并显示所有在线用户、群聊内容及私聊内容。(2) 进入聊天室后,就可以选择相应的聊天对象聊天;查看在线用户的基本资料;查看个人的基本资料及修改个人的基本资料或是退出聊天室。第五章 详细设计5.15.1 数据库模块设计数据库模块设计建立一个名为 chatroom 的 sql server 数据库。数据库中共使用一个表名为: 表 5-1 用户信息表(userinfo)列名数据类型长度允许空idint50noqqvarchar12nonic
51、knamevarchar12nopasswordvarchar12noagedatatime12nosexvarchar12yesbirthdayvarchar12yes signvarchar50yesphotovarchar1024图 5-1 用户信息表在规划设计聊天室时,首先要确定好谈话内容存储方式,jsp 可以用三种形式实现聊天内容的存取:1)用全局变量 application 和 session 对象实现。这种形式速度快、效果好,但较消耗系统资源。2)用读写数据库的方法实现。这种方法相对简单,但会使数据库负担重。本系统采用的就是该方法。本设计选择了 sql server 2000 数
52、据库来存储谈话内容。3)用读写文本文件方法。该方法适合简单的聊天室。另一个设计聊天室时要考虑的因素就是聊天室成员的动态刷新。有的用户在退出聊天室时并不是从退出链接退出的,但服务器并不知道用户已经离开了。因此需要建立一个在线用户数据库,每隔一段时间检查一次,看用户从最后一次发言到现在是否超时,若是,则将该用户自动删除。5.25.2 用户登录模块设计用户登录模块设计本系统需注册,输入账号和密码即可。登录成功后,显示聊天室列表,用户选择想要进入的聊天室,则在相应的聊天室中显示出欢迎信息,并在当前在线用户中增加刚才登录的当前用户的名字。如图 5-2 所示。图 5-2 用户登入界面图 5-3 聊天室主界
53、面用户从登陆页面进入聊天室时,如果登录失败则显示出错原因。比如用户名或密码错误,或者申请已经存在的用户名,出现检正后重新输入等提示。如果该用户已在线,出现用户以在线提示。如图 5-4 所示。图 5-4 网页消息用户登录验证public class loginaction extends dispatchaction /* * 数据库查询,验证登录帐号,密码 */public actionforward login(actionmapping mapping, actionform form,httpservletrequest request, httpservletresponse resp
54、onse)throws exception httpsession session = request.getsession();useractionform uaf = (useractionform) form;system.out.println(000000000跳到action这边来了);user user = null;string qq = uaf.getqq();string password = uaf.getpassword();userinfo userinfo = userinfo.getinstance(); / 获得userinfo类的对象vector vector
55、 = userinfo.getlist();boolean flag = true; / 标记是否登录的变量/ 判断用户是否登录for (int i = 0; i vector.size(); i+) user = (user) vector.elementat(i);system.out.println(user.getqq= + user.getqq();system.out.println(uqq= + qq);if (qq.equals(user.getqq() printwriter out;try out = response.getwriter();out.println(ale
56、rt(该用户已登录);window.location.href=index.jsp;); catch (ioexception e) e.printstacktrace();flag = false;break;if (flag) user = usermanager.getinstance().userlogin(qq, password);if (user != null) / 登录成功,转到聊天页面/ 将用户信息保存到session中session.setattribute(user_info, user); / 创建一个hashmap对象,用来保存每个用户的session idenco
57、dingfilter.put(user.getqq(), session);response.sendredirect(messages?action=loginroom); else / 密码或id错误,要回到login.jsp页面printwriter out;try out = response.getwriter();out.println(alert(账号或密码错误,请重新登录);window.location.href=index.jsp;); catch (ioexception e) e.printstacktrace();return null;5.35.3 用户注册模块设计
58、用户注册模块设计该模块的主要作用是实现用户注册,及保存用户的个人信息。注册完成之后系统会返回一个账号给用户,用户下次登录的时候就用此账号和密码。图 5-5 用户注册注册成功后,系统会自动生成一个账号。生成页面如下:图 5-6 注册成功实现用户注册功能代码如下:public class userregiteraction extends action overridepublic actionforward execute(actionmapping mapping, actionform form,httpservletrequest request, httpservletresponse
59、response)throws exception useractionform uaf=(useractionform) form;user user = new user();boolean flag = false;string photoname = ;string qq=;iptimestamp its = new iptimestamp(request.getremoteaddr(); / 产生由ip、时间,3位随机数组成的一个实例formfile photo = (formfile) uaf.getphoto();/ 获取到图片system.out.println(p000=+u
60、af.getsex();photoname=photo.getfilename();/若用户没有选择头像,则设为默认头像if (photoname.equals()photoname = default_photo.jpg ; string ph_last = photoname.split(.)1;/ 获得照片的后缀名photoname = its.getiptimestamprand() + . + ph_last;/ 给图片自动重新命名/自动产生一个qq帐号 int number=new random().nextint(100000); qq= 66.concat(string.val
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年工业废气催化燃烧技术环保产业发展报告
- 自媒体技术使用合同范本
- 游戏行业临时工合同协议
- 江苏招聘教师就业协议书
- 用吊车维修楼房合同范本
- 门市房出租协议合同范本
- 舞蹈机构合作人合同协议
- 门窗代加工项目合同范本
- 祖屋继承公证协议书范本
- 港龙文化体育合作协议书
- 医疗不良事件管理体系建设与持续改进
- 义务教育科学课程标准(2022年版)
- 超星尔雅学习通《大学体育(上海体育学院)》章节测试(含答案)
- GB/T 34652-2017全断面隧道掘进机敞开式岩石隧道掘进机
- GB/T 21872-2008铸造自硬呋喃树脂用磺酸固化剂
- 中国铂族金属供需发展趋势
- 风电施工合同模板
- GA/T 1567-2019城市道路交通隔离栏设置指南
- 氧化还原反应的类型
- 小学英语素材-1-5年级英语牛津词汇表(带音标) 牛津上海版
- DB11-T1836-2021 城市桥梁工程施工技术规程高清最新版
评论
0/150
提交评论