基于JSP即时聊天系统的设计与实现.doc
49 49 毕业设计(论文)题目 基于JSP即时聊天系统 的设计与实现 学生姓名 吴覃秀 学号 2003112115 专业 计算机科学与技术 班级 20031121指导教师 杨旺民 评阅教师 完成日期2007年 5月 26日学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。(宋体小4号)作者签名: 2007年 5 月 26日学位论文版权使用授权书本学位论文作者完全了解学校有关保障、使用学位论文的规定,同意学校保留并向有关学位论文管理部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权省级优秀学士学位论文评选机构将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。本学位论文属于1、保密 ,在_年解密后适用本授权书。2、不保密 。(请在以上相应方框内打“”)作者签名: 2007年 5 月 26 日 导师签名: 2007年 5 月 26 日 目 录摘要 1Abstract 1前言 21 聊天系统需求分析及技术支持31.1 项目开发背景 31.1.1 课题来源31.1.2 研究目的和意义 31.2 聊天系统概述 31.2.1 聊天系统功能需求概述31.2.2 聊天系统现状研究41.2.3 聊天系统设计路线和研究方案 41.2.4 聊天系统发展方向51.3 聊天系统开发技术介绍 51.3.1 JSP技术介绍51.3.2 JavaBean技术简介81.3.3 JDBC及数据库管理的连接 81.3.4 B/S模式与C/S模式102 聊天系统总体设计 112.1 开发和设计的总体构思与规划112.1.1 聊天系统的基本原理112.1.2 拟定聊天系统应达到的技术指标 112.2 聊天系统模块总体设计 122.2.1 模块划分及用户角色122.2.2 模块任务概述132.3 聊天系统程序设计流程 132.3.1 整体设计过程 132.3.2 总体设计框架图 142.4 聊天系统数据结构设计 162.4.1 chatuser表的设计162.4.2 roominfo表的设计162.4.3 chatmusic、chatsport、chatcomputer、chatchat表的设计163 聊天系统详细设计 173.1 聊天系统详细功能描述173.2 聊天系统程序设计流程图173.2.1 系统功能详细设计173.2.2 用户登录程序设计流程图 173.2.3 管理员登录程序设计流程图 173.3 模块详细设计203.3.1 普通用户登录模块详细设计 203.3.2 管理员登录模块详细设计 213.3.3 聊天模块详细设计213.3.4 管理模块详细设计223.3.5 退出模块详细设计233.4 聊天系统数据库详细设计 243.4.1 数据库文件的设计 243.4.2 建立ODBC数据源 253.4.3 JDBC-ODBC连接 283.5 聊天系统运行环境的安装与配置293.5.1 JDK的安装和配置 293.5.2 Tomcat的安装和配置334 聊天系统具体实现及效果 354.1 系统首页实现及效果 354.2 注册模块实现及效果 364.3 普通用户登录模块实现及效果 384.4 聊天模块具体实现及效果 404.4.1 聊天主截面 404.4.2 聊天信息显示窗口414.4.3 发言控制面板 424.4.4在线用户列表及辅助功能链接窗口 434.5 用户的退出处理 444.6 管理模块实现 444.7 聊天系统的发布和部署 455 项目设计总结 465.1系统概述465.2 关键问题的分析和解决 465.2.1 中文乱码问题 465.2.2 私聊功能的实现问题 465.2.3 尚存在的问题 475.3 系统展望 475.4 自身收获 47致谢 48参考文献 49基于JSP即时聊天系统的设计与实现 学 生:吴覃秀指导教师:杨旺民(三峡大学 电气信息学院)摘 要:随着Internet速度的提高和使用的普及,网络上各式各样的应用层出不穷,网上聊天就是这样一个众口皆碑的应用。相信很多人接触网络都是从网上聊天开始的。本文所介绍的网络即时聊天系统“开心漫话屋”,采用最新的JSP开发技术辅以JavaBean组件和JDBC数据库连接技术整合实现,具有良好的程序结构和人机交互界面,通用性强,既可独立为一个小型聊天网站,也可应用于其它不同需求的网站。文章将以JSP+Tomcat作为开发环境,从需求分析到系统实现,详细介绍本聊天系统的设计和实现过程。关键词: JSP;JavaBean;JDBC;即时聊天系统Abstract: With the speedly development and widly use of the Internet, types of use with the network emerges in endlessly and changes now and , which includes the online chat that highly aperichates by a large number of people. It is beleaving that lots of people start their touch with the Internet from online chat. The Internet real-time chat system this paper introduces named “Happy Free Chat Room” uses the up-to-date Web technology called “JavaServer Pages”, assisting by the JavaBean component and the database connetting technique JDBC for its implemention. The chat system provides nice routine structure and person-machine mutual interface and having universal property, so that it can works as not only a minitype independent web station but also a part of other web stations that have defferent demands.This paper will introduces the designation and implementation procedure using JSP and Tomcat as the developed environment in details, from requirement analysis to code implementation.Key Words: JSP; JavaBean; JDBC; Real-time Chat System前言“但愿人长久,千里共婵娟。”大词人苏东坡这句脍炙人口的表达对故人极度思恋的千古佳句流传至今,引起了多少游子的深切共鸣时空距离的存在,阻隔了无数千里之遥的亲人朋友们的情感交流,虽有鸿雁帮忙传送书信,可漫长的等待却成为时间异步的真实写照。然而随着当今社会计算机科学技术的迅猛发展和网络的出现,信息资源的实时共享成为现实,更重要的是它提供了一种极为直接的即时的交互方式,当然这种交互不单是指数据、信息之间的传递,也包括人与人之间的互相交流,各种聊天软件和在线聊天室正是承载这类交互的媒介,人们之间的交流几乎完全可以不受时空的约束,“但愿人长久,千里共婵娟”在现今可以蜕变成“只需网上游,千里共聊天”了。由于Internet/Internat的广泛使用,客户与服务器端之间能否有效地进行交互成为我们要解决的问题。JSP是一种在服务器端嵌入Java代码的脚本语言,是开发Web动态网站重要而快速、有效的工具,在保证最大可操作性的前提下,它提供了比一般脚本语言(如ASP、PHP)和CGI更快的执行速度。由此可见,作为一种Web实现技术,它的效率是很高的,这一点正好符合了聊天系统所要求的实时性。JSP自身的安全性,再加上实现模式的特点,完全能够达到聊天系统的即时性和保密性的要求,保证了人们在交流中需要维护的隐私权。此外,作为Java平台的一部分,JSP拥有Java语言“一次编写,随处运行”的特点,它的平台无关性使其可以轻松移植到其它平台上运行。种种优点使得JSP技术为目前各式各样的聊天系统的实现都打下了良好的基础。还有值得注意的一点就是,虽然在市面上早已出现了“聊天室”的应用软件(例如:Microsoft Chat),其使用界面及功能也已经十分完善,不过它总是一套独立于浏览器之外的套装软件,上手之前还要先熟悉操作方法才能登堂入室,对于没有时间学习的网友来说,这总是不方便,而且,诸多聊天软件采用的是C/S的结构模式,如果服务器出现故障,则这个聊天系统都将瘫痪。所以越来越多的网站开发出根植于浏览器之上(即通常所说的B/S模式)的 “聊天室”,以便造福更多的网友。本毕业设计课题是“基于JSP即时聊天系统的设计与实现”,是由杨旺民老师提供的,其思路就是开发一个B/S模式的并且基于JSP技术的即时聊天系统,后台数据库使用的是Access 2003。其功能主要有用户注册及登陆、聊天室即时聊天(包括公聊和私聊)、聊天对象选择、颜色字体个性化设置、语言表情和动作选择等,管理员可以管理用户资料、发布系统公告等,并且系统可以自动刷新在线用户和聊天信息。1 聊天系统需求分析及技术支持1.1 项目开发背景1.1.1 课题来源对于聊天网站,相信我们都不陌生,或者已经见过,或者曾经进去高谈阔论过。通过这样一个网上聊天平台,不仅可以与自己的亲人和朋友随时随地的进行语言交流和沟通,也可以同不认识的人相互交流思想,而且还可以认识五湖四海的朋友,为我们的生活增添了不少乐趣,生活变得更加多姿多彩了。上网聊天已经成为网络时代出现的一种标志性的时代产物。本课题建立的就是这样一个顺应时代潮流的小型聊天网站。管理员可以通过该系统对用户以及用户及用户聊天信息进行管理,普通用户在该系统注册成为会员后可以与其它会员进行即时聊天。用户也可以以游客身份登录聊天系统。登录系统后,用户还可以自由选择聊天对象、自定义聊天文本颜色、自己添加丰富的表情语言,增加聊天的情趣性和娱乐性。衷心希望能够为大家搭建一个良好的语言交流平台。1.1.2 研究目的和意义作为使用频率最高的网络软件,实时聊天已经突破了作为技术工具的极限,被认为是现代交流方式的象征,并构建起一种新的社会关系,它是迄今为止对人类社会生活改变最为深刻的一种网络新形态。聊天系统的即时、方便、快捷、高效,正是本文研究的目的之所在。在研究如何设计和实现这样一个聊天网站的同时,我们对于动态网站的构建会有一个较为深刻和全面的理解,尤其是对JSP技术以及相关的开发技术更要认真切实的掌握,这样才能开发出一个安全实用可靠的聊天网站系统来。当然,在设计和实现的过程当中一定会遇到这样那样的问题,可能是暂时性的有望在设计完成时能够解决的问题,也可能是直到毕业设计完成之后仍然解决不了的问题,无论怎样,遇到问题应该庆幸才对,因为在想办法解决问题的过程中你会学到很多,甚至会有意想不到的收获。有了构建一个聊天网站的切身经历和体验,一定能够为今后的动态网站设计打下良好的基础。因此,本课题有其自身的研究意义和价值。1.2 聊天系统概述1.2.1 聊天系统功能需求概述本聊天系统各项需求功能大致如下:l 第一次使用系统的用户通过填写个人信息来注册,并能验证用户名的有效性(是否重名);l 使已经注册的用户可以在验证他的登录信息(一般指用户名和密码)后登录系统;l 可以修改密码;l 登录后可以自由选择聊天室;l 能和所有人聊天,即要求实现公聊;l 能选择特定的聊天的对象,即要求实现私聊;l 能够随意选择聊天文本的颜色;l 能够选择聊天的语言动作和表情;l 能够自动显示聊天室中的成员;l 管理员能够管理用户及其聊天信息;l 管理员可以将表现不好的用户踢出聊天系统;l 管理员能够实现用户的升级;l 管理员能够发布系统公告,向所有用户或特定用户发送系统消息;l 每当一个新用户进入后会有系统提示;l 可以自动刷新在线用户和聊天信息;l 采用数据库记录用户详细信息及聊天信息。1.2.2 聊天系统现状研究对于聊天网站,相信我们都不陌生,或者已经见过,或者曾经进去高谈阔论过。通过这样一个网上聊天平台,不仅可以与自己的亲人和朋友随时随地的进行语言交流和沟通,也可以同不认识的人相互交流思想,而且还可以认识五湖四海的朋友,为我们的生活增添了不少乐趣,生活变得更加多姿多彩了。上网聊天已经成为网络时代出现的一种标志性的时代产物。本课题建立的就是这样一个顺应时代潮流的小型聊天网站。1.2.3 设计路线和研究方案Web技术超越了传统的客户机/服务器两层结构,采用了三层体系结构:用户界面层/事务层/数据库层。因此Web结构有着更好的安全性。服务器端程序的实现技术也很多,本人选用了当前比较流行的网络编程技术JSP作为主要实现手段(配合Java Servlet、JavaBean、HTML等)。JSP作为一种Web实现技术,它的效率是很高的。这一点正好符合了聊天系统所要求的实时性。JSP自身的安全性,再加上实现模式的特点,完全能够达到聊天系统的即时性和保密性的要求,保证了人们在交流中需要维护的隐私权。除此之外,作为Java平台的一部分,JSP拥有Java语言“一次编写,随处运行”的特点。再者,随着越来越多的服务器供应商将JSP支持添加到他们的产品中,这样一来用JSP做成的这套系统可以轻松移植到其它平台来运行。所以本人认为JSP不失为实现本系统的最佳技术。l 主程序语言:JSP+JavaBean+JDBCl 开发平台:u 硬件平台:CPU P4 1.8GHz 内存 256MBu 软件平台:操作系统 Windows XP professional 数据库 Access 2003 开发工具包 JDK1.5.0 JSP服务器 Tomcat 5.0.28 浏览器 IE 6.01.2.4 聊天系统发展方向聊天室是WWW世界中最常见的及时聊天系统服务,最早的起源来自于BBS站点,除了在线聊天之外,的确是漫漫长夜打发时间的最佳消遣。“互通有无、排忧解难”也是聊天室的另一个功能;其次便是当成传递信息的渠道;如果更新的时间够快的话,聊天室还可以发展成为“在线会议”(类似NetMeeting的功能),其优点可见一斑。目前,聊天软件的功能除了最基本的文本聊天,已经可以语音聊天,图像聊天,视频聊天,文件传输等三维聊天,还发展了短信发送,无线聊天,显示对方IP,在线游戏等功能,可以预见,在不久的将来,聊天软件将成为人们因特网上相互联系和娱乐的主要平台。1.3 聊天系统开发技术介绍1.3.1 JSP技术介绍1.3.1.1 JSP的基本概念JSP是JavaServer Pages的简称,是由Sun Microsystems公司倡导、许多公司参参与一起建立的一种动态网页技术标准,其网址为在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页(*.jsp)。JSP是由Sun公司为创建动态Web页面而定义的一种技术。它们是与Java相关的一种HTML文档,Java提供动态内容。JSP是在服务器端应用的一种脚本,它接受请求并生成响应。此请求通常由一个Web客户端发送,而响应则是根据请求生成的一种HTML文档,该文档需要返回给Web客户端。由于JSP是服务器端应用,所以它拥有对服务器端资源的访问权限,诸如Servlet、JavaBean、EJB和数据库。1.3.1.2 JSP的工作原理JSP文件是在一个普通的静态HTML文件中添加了一些Java代码,JSP文件的扩展名为.jsp。当第一次访问JSP页面的时候,这个文件首先会被JSP容器翻译为一个Java源文件,其实就是一个Servlet,并进行编译生成相对应的字节码文件.class,然后像其他Servlet一样,由Servlet容器来处理。Servlet容器装载这个类,处理来自客户的请求,并把结果返回给客户。这个过程如图1所示。图1-1 JSP页面的执行过程如果以后再有客户访问这个页面时,只要该文件没有发生过更改,JSP容器就直接调用已经装载的Servlet。如果已经做过修改,那就会再次执行以上过程,翻译、编译并装载。因为首次访问的时候要执行一系列上面的过程,所以第一次访问某JSP页面时速度会较慢;但在以后运行时速度将非常快。1.3.1.3 JSP的特点l 一次编写,随处运行由于JSP页面的内置脚本语言是基于Java编程语言,并且所有的JSP页面都要被编译成Servlet,因此JSP页面具有Java技术的所有优点,包括健壮的存储管理和安全性等。当然其中最重要的一点就是它可以“一次编写,随处运行”。l 将内容的生成和显示进行分离使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面,同时使用JSP标识或者小脚本来生成页面上的动态内容(内容是根据请求来变化的,例如当前用户的信息)。生成内容的逻辑被封装在JSP标识和JavaBeans/EJB组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。如果核心逻辑被封装在标识和JavaBeans/EJB中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成,在服务器端,JSP引擎解释JSP标识和小脚本,生成所请求的内容(例如,通过访问JavaBeans组件,使用JDBC(TM)技术访问数据库,或包含文件),并且将结果以HTML(或者XML)页面的形式送回浏览器。这有既助于作者保护自己的代码,又能保证任何基于HTML的Web浏览器的完全可用性。l 强调可重用组件绝大多数JSP页面依赖于可重用的、跨平台的组件(如JavaBeans组件或者Enterprise JavaBeans)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,使得这些组件为更多的使用者或客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发结果的努力中得到平衡。l 采用标识简化页面开发 Web开发人员并不一定都是熟悉脚本语言的编程人员。JSP技术封装了很多功能,提供了一些系列的JSP标记。使用它们,能够完成访问JavaBean组件、设置或查询组建的属性及下载Applet等功能。并且通过开发定制化的标记库扩展JSP功能。今后,第三方开发人员和其他人员也可以为常用功能创建自己的标记库。这些标记库有助于简化开发难度,减少开发时间。1.3.1.4 JSP技术的优势总瞰几年前,要开发一个商业性的动态站点,我们只能用CGI,SSI来实现,而且,开发效率和运行效率都不高。后来又出现了ASP,JSP,PHP,ISAPI等技术,用他们开发动态网站就好得多了,但还没有一种技术能兼顾开发效率和运行效率,同时满足分布式实践处理的功能,并且有强大的扩展能力。ASP,PHP等虽然开发速度快,但运行速度比不上ISAPI;而ISAPUI虽然运行速度快,但很难编写调试,而且移植性比较差,不能在Linux和Unix平台下使用。然而,JSP技术出现后,这一切难题都迎刃而解了。JSP秉承了Java语言的优势,是一种实实在在与平台无关的开发技术。JSP既有很高的运行效率,开发周期很短,同时扩展能力很强,它的技术规范是公开的,任何人都可以按照规范开发出自的产品,因此JSP迅速成为了众多开发者所瞩目的对象。目前,很多公司纷纷宣布支持JSP技术,很多网站改弦易辙,采用了JSP作为开发手段,很多软件组织都在自己的产品中加入了对JSP技术的支持,JSP技术得以迅猛的发展起来了。1.3.1.5 JSP前景分析JSP是一种较新的技术,国内采用的较少。在国外,JSP已经是比较流行的一种技术,尤其是电子商务类的网站大多采用JSP。在JSP开发技术里,可以通过开发JavaBean文件实现同样的功能,JavaBean不需要注册,只要放置在相应的目录下就可以运行。此外JSP的推出主要就是考虑到平台的无关性,由于JSP继承了JAVA技术的优点“一次编写,处处运行”,因此JSP代码可以在APACHE、IIS等服务器上执行。它支持大部分操作系统。世界上一些大的电子商务解决方案提供商都采用JSP/Servlet。比较出名的入IBM的E-Business,它的核心是采用JSP/Servlet的WebSphere;西方另外一个非常著名的电子商务软件提供商Intershop,原来的产品Intershop 1、Intershop2、Intershop 3、Intershop 4占据了主要的电子商务软件市场。他们都是通过CGI来提供支持的。但后来它推出了Enfinity,一个采用JSP/Servlet的电子商务应用服务器,并不再开发系统软件,足见其对JSP/Servlet技术的青睐和推崇。可见,JSP是动态网站技术的未来之星。这也正是本聊天系统运用JSP技术作为主要的系统设计语言的根本原因之所在。1.3.2 JavaBean技术简介 JavaBean是一种可以重用的平台中立的Java组件,可以在软件开发工具中被直观的操作。ActiveX空间和JavaBean可以说属于同一类型,其功能是类似的。JSP对于在Web应用中集成Javabean组件提供了完善的支持。这种支持不仅可以缩短开发时间(可以直接利用经测试和可信任的已有组件,避免了重复开发),也为JSP应用带来了可伸缩性。Javabean在JSP程序中常用来封装事物逻辑、执行复杂的人物计算以及数据库操作等,可以很好的实现业务逻辑和前台程序的分离,使得系统具有更好的健壮性和灵活性。应用程序开发者可以通过支持JavaBean的开发工具,直接使用现成的JavaBean,也可以在开发工具容器中,对组件进行必要的修改、测试而不必编写和编译程序。Java模型中,组件可以修改与其它组件组可以生成新组件或完整的应用程序。1.3.3 JDBC及数据库管理的连接1.3.3.1 Java Database Connectivity (JDBC) 要实现动态网页的实现少不了与数据库的连接,接下来介绍JDBC技术。JDBC的 API通过一个统一的方式访问不同的数据库。类似ODBC,JDBC 对程序开发人员隐藏了数据库产权的问题。因为它是建立在Java之上的,JDBC 也能供提供平台无关性的数据库访问。 JDBC是一个规范,遵循JDBC接口规范,各个数据库厂家各自实现自己的驱动程序(Driver),如下图2所示: 图1-2 JDBC 接口规范应用程序在获取数据库连接时,需要以URL的方式指定是那种类型的Driver,在获得特定的连接后,可按照固定的接口操作不同类型的数据库,如: 分别获取Statement、执行SQL获得ResultSet等。JDBC 定义了四种本质上不同的数据库驱动程序,下面分别对其进行阐述: l JDBC-ODBC 桥当JDBC还在襁褓中的时候,JDBC-ODBC 桥被证明是最有用的。使用它,程序开发人员可以使用JDBC来访问ODBC数据源。它的缺陷是,需要客户机使用微软的windows操作系统,并且安装ODBC驱动程序。通过使用这种驱动程序,你牺牲了JDBC的平台无关性。另外, ODBC driver还需要客户端的管理。 l JDBC-native 驱动桥JDBC-native 驱动桥提供了建立在本来的数据库驱动程序之上的JDBC接口,没有使用ODBC。 JDBC驱动程序把标准的JDBC的调用转换成原始的数据库API调用。使用Type2 驱动同样牺牲了平台无关性,因为这需要安装客户端的数据库驱动代码。 l JDBC-network 桥JDBC-network 桥驱动不需要客户端的数据库驱动器。它利用网络服务器的中间件来访问数据库。这使得诸如负载均衡、连接池、数据缓存之类的技术成为可能。 因为type 3驱动程序经常需要一个相对较少的下载时间,具有平台无关性,不需要客户端的安装和管理,这种方式最适合Internet应用。 l 纯Java驱动Type 4 用纯粹的Java数据库驱动程序提供数据库访问。由于type 4驱动程序在客户机上运行和直接访问数据库,在这种方式下执行意味着2层结构。在多层结构中对type 4驱动的更好应用是使用EJB封装数据访问代码,让EJB为客户端提供数据库无关的服务。 1.3.3.2 JDBC驱动及连接JDBC驱动及连接Apache Server 为一些常用的数据库提供了JDBC驱动,包括Oracle, Access,Sytembase, Microsoft SQL Server和Informix。使用JSP访问数据库实际上就是先建立一个JavaBean组件,让它来完成与数据库的连接查询功能,并返回一个数据集合(ResultSet),然后在JSP页面中使用<jsp:useBean>标签创建Beans的实例,通过它来对数据库进行查询修改等操作。1.3.4 B/S与C/S模式 过去,两层的(2-tier)客户机/服务器(C/S)程序非常普遍。在有些情况下,服务器提供的唯一服务就是数据库服务。这时候,客户机就要承担访问数据、执行商业逻辑、转换结果的格式以适用于显示、向用户显示界面、接受用户输入等任务。C/S结构的每一个客户端都必须安装和配置软件。因此C/S结构通常开始的时候都容易部署,但是难于升级,而且通常都基于产权协议(proprietary protocols)有代表性的是产权数据库协议,这也使得商业逻辑和显示逻辑难于重用。图3展示了这种典型的两层结构。客户机(商业逻辑)(数据访问)(结果显示)服务器(商业逻辑)(数据访问) 图1-3 两层的C/S结构Web浏览器是一个巨大的进步,它让同样的信息在不同的机器上同样地显示。于是出现了浏览器/服务器模式(Browser/Server, B/S)的三层结构(见图4)。B/S模式的优点是维护方便,能够降低总体拥有成本。客户端运行软件,就像我们平时上网浏览网页一样,有个浏览器就行了,不用安装其它软件。B/S模式的软件所有的维护、升级工作都只在服务器上进行,而客户端就能获得最新版本的软件。采用三层结构可以是提高服务器的配置,降低客户端的配置。这样增加的只是一台服务器(应用服务和数据库服务可以放在同一台计算机电脑中)的价格,而降低的却是几十台客户端机器的价格,起到了降低总体拥有成本的作用。客户端应用服务数据库服务 图1-4三层结构(B/S结构)2 聊天系统总体设计2.1 开发和设计的总体构思与规划2.1.1 聊天系统的基本原理聊天系统的基本原理,就是把每个连上同一网页的用户传送的发言数据储存起来,然后将所有的发言数据传给每一用户。也就是说,用数据库汇集每个人的发言,并将数据库中的数据传给每一个人就实现了聊天系统最基本的功能。先从客户端收集消息,然后通过服务器端消息分发程序中转,将全局消息发送给的所有用户。 其原理图如下:消息分发程序(服务器端)收集消息(客户端)用户2(浏览器)用户1(浏览器)用户3(浏览器)用户N(浏览器)图2-1聊天系统基本原理图2.1.2 拟定聊天系统应达到的技术指标1) 允许新用户注册,并开设账户;用户登录进入聊天室后,显示在线人数和在线聊天用户的用户名,并在聊天区域显示该用户的欢迎信息(如欢迎某某的到来)。同时在线用户列表中显示该用户,在线人数增加。2) 系统中要有会员登录及身份验证,能实现对身份的区别处理。3) 在系统中能在线发布信息。4) 聊天内容文字颜色和表情可由聊天者根据喜好自选,并可在下拉列表中选取聊天对象。5) 可通过帐户ID号对用户资料进行查询。6) 允许用户进行在线公聊和私聊。7) 登录聊天室后可自由更改用户注册时的帐户和密码。8) 采取用户积分制,管理员可根据用户在线时间提升用户等级,新用户等级默认为1。9) 高级用户(用户等级超过设定最低等级者)具有提升用户等级功能,踢人功能(默认最低等级5)。高等级用户可踢低等级用户,反之不行(提升用户等级类似);超级用户可发布聊天室主题,随机显示最近3条聊天室主题(聊天室顶部信息)之一;高级用户可发布聊天室公告(用加粗的红色的字体显示如 “*聊天室公告:*” 字样)。10) 系统可自动刷新在线用户列表和聊天内容,也可以通过点击相应按钮进行页面刷新。 11) 采用数据库记录用户详细信息及聊天信息。12) 点击离开按钮可离开聊天室,并在聊天区域显示该用户离开信息,同时在线用户列表将删除该用户,在线人数减少。2.2 聊天系统模块总体设计2.2.1模块划分及用户角色 根据以上聊天系统技术指标的分析,本聊天系统总体上分为普通用户模块和管理员模块。其中普通用户模块包括登录模块、聊天模块、退出聊天室模块,管理员模块包括登录模块、管理模块、退出聊天室模块,普通用户和管理员的退出聊天室模块机制类似,均可以通过转向登录模块来实现退出聊天系统的功能。系统总体模块框架划分及其关系如下图所示:图2-2 聊天系统模块划分及其关系使用UML例图来分析用户和管理员角色,可以得到如下图所示的用例图。用户