毕业设计(论文)-基于Web的聊天室构建.doc_第1页
毕业设计(论文)-基于Web的聊天室构建.doc_第2页
毕业设计(论文)-基于Web的聊天室构建.doc_第3页
毕业设计(论文)-基于Web的聊天室构建.doc_第4页
毕业设计(论文)-基于Web的聊天室构建.doc_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

太原理工大学毕业设计(论文)用纸基于Web的聊天室构建摘 要Web聊天室曾在因特网进入中国早期的时候被广泛使用,一度深受国内网民的青睐。随着腾讯QQ以及之后微信的普及,目前Web聊天室已然较少被使用。但在一些商业网站,例如BBS以及在线购物系统,还是会有Web聊天室的存在。基于Web聊天室自身的优点,即不需要安装任何客户端应用,聊天内容呈现便捷。所以,Web聊天室将长期存在于因特网上。 该聊天室系统由用户注册、用户登录、聊天室的选择、主聊天室以及相应修改、帮助功能组成。使用Java编程语言集合JSP、JavaBean、Servlet技术完成系统的整体设计,以MyEclipse为平台,Tomcat为服务器。关键字:Web;因特网;聊天室;JSP;JavaBean;Servlet全套设计加扣 3012250582Web-based chat room to buildAbstractWeb chat rooms to enter China in the early stages of the Internet is widely used and loved by netizens. With the popularity of Tencent QQ and WeChat, the current Web chat rooms have been used less. However, in some sites, such as BBS, online shopping systems, but also may have Web chat rooms. Because the Web chat rooms also has its merits, it does not need to install any client, and show message very quickly. Therefore, Web chat rooms will always appear on the Internet.The chat room makes up with users registration system, users log on, chat rooms to choose, the main chat room, some changes and the composition of functions. Using Java programming language and collect with JSP, JavaBean, Servlet technology to complete the overall design of the system, using MyEclipse as a platform and Tomcat as a server.Keyword:Web; Internet; Chat Room; JSP; JavaBean; Servletiii目 录摘要iAbstractii1概述11.1聊天室系统的基本概念11.2开发聊天室系统的意义11.3目前的研究现状11.4总体设计的基本思路12主要技术32.1JSP技术32.2JavaBean技术42.3Servlet技术42.4MyEclipse开发工具62.5Access数据库技术62.6Tomcat应用服务器技术63系统分析83.1系统设计的目的和意义83.2系统功能84系统设计94.1系统总体设计94.2系统数据库设计144.2.1数据库144.2.2基本表的设计155功能实现175.1用户注册与登录功能175.1.1用户注册175.1.2用户登录195.2用户选择聊天房间功能205.2.1 用户登录时选择聊天室房间205.2.2 用户聊天时更改聊天室房间215.3用户聊天功能225.3.1显示功能225.3.2用户信息修改功能235.3.3处理功能255.3.4输入功能265.3.5查看在线聊友功能285.3.6私聊功能(悄悄话)295.3.7趣味聊天功能305.4高级用户管理功能315.4.1 高级功能(踢人禁言)315.5共享文件功能355.5.1 上传功能355.5.2 下载功能385.6音乐播放功能415.6.1 音乐播放功能416系统测试456.1 测试主要内容456.2 测试详情457总结与展望467.1 对存在问题的处理467.1.1 边框的处理467.1.2 登录页面中的验证码问题467.1.3 其他问题467.2 心得体会47致 谢49参考文献50附录(外文原文及翻译)511 概述1.1 聊天室系统的基本概念聊天室系统基于互联网,可进行多人通讯。本系统旨在让用户在进入该聊天室系统平台的同时,可以借由网络在线与相距较远的其他一位或多位用户进行通讯交互。通过利用计算机通讯原理,并且基于一定的网络通讯技术及高级语言程序设计和JSP应用程序设计的技术基础,以一个聊天室平台形式,为用户提供交互服务。 1.2 开发聊天室系统的意义上帝赋予人类说话的能力,而说话又创造了人类对宇宙的量度思想。1随着信息科技的高速发展,我们用于进行信息交互的方式也日益丰富,创新。从早期的电报,有线电话,而后的传真,移动电话,电子邮件,然而对于越来越快节奏,信息交流越来越频繁的当今社会,如果需要与几个人同时进行会谈依然是一件需要费时费力进行安排的活动,尤其是对于以上的几种交流方式,要么具有局限性,要么有费用的问题,其中电话就是属于费用比较高的一种选择,而且通常情况下不支持进行多人互动,限于单对单的通话。通常的选择是把参与会谈的人越好时间,聚集到同一个房间才能进行有效的交流。不但费时费力而且往往有诸多因素会影响大家的日程安排。电子邮件则是非即时的联系方式,用于交互则需要一定的时间,只能作为一种辅助交流的选择。在这种情况下,聊天室系统应运而生,很好的满足了多人会谈的需求,在网络上虚拟一个交流平台,这样在不同的地点也可以进行方便的交流。而且优秀的聊天室还具备诸多表情符号供用户选择用以加强思想感情的传递。而且基于广泛应用的互联网,费用低廉,信息即时交流,参与方便的优点,在这个快节奏的社会中不仅加强联系,同时节省交互的成本进而创造出更多的价值.1.3 目前的研究现状随着IT技术的迅猛发展,网络以其日新月异的创新精神以及无处不在的便捷性,吸引了越来越多的人的注意并参与其中,信息资源的重要性以前所未有的形式摆在了社会的焦点位置,信息交互的经济效益直接体现在生产管理活动中。对于一个组织尤其是商业公司,必须能利用信息资源的及时性、准确性,提高工作效率,取得更大的经济效益和社会影响。对于个人而言,也可以通过信息交互的便捷更好地实现个人价值。方方面面的实际需求表明,一个良好的交互通讯的方式,能从一个较高的程度上提升工作效率,避免由于不必要的时间成本而承担可能的种种损失。准确的说一个良好的聊天室系统应能全面的处理这个问题。在经过了近些年来认识及技术的发展,聊天室系统已然趋于成熟。1.4 总体设计的基本思路针对所学知识以及对Web应用系统的了解,根据用户在实际聊天中的需求,确定开发以Java-Web技术为主的一个在线聊天室系统。主要满足用户对群聊,私聊等功能的需要。基于MyEclipse平台,通过Java编程语言、Access数据库技术进行开发,初步涉及了框架的思想以及对Javabean的运用。本系统的开发工作分为以下几个主要阶段:(1) 系统需求分析。包括用户需求分析,系统调查。(2) 系统的功能设计。(3) 数据库的设计。E-R图、创建数据表。(4) 系统的功能模块的划分以及实现。根据系统所管理的数据的类别不同,对数据操作进行功能划分,分别实现功能模块。系统的测试。单元测试,以及将单个实现的功能整合为一体,进行整体性能测试。对存在的错误和不足,予以及时的修正。2 主要技术2.1 JSP技术本系统基于JSP技术。JSP的全称是JavaServer Pages,它是在Sun Microsystems公司所发起、众多公司共同参与建立的一种新的动态网页技术的标准。将JAVA的代码片段(Scriptlet)和JSP的标记(tag)在静态的网页HTML文件(*.htm,*.html)中规范的加入,即构成了动态的JSP网页(*.jsp)。JSP技术的特点如下:(1)将页面内容的生成同页面内容呈现予以人为分离 (2)生成了可复用的软件组件 (3)应用了标记从而简化了页面的设计 JSP九中内置对象:1) page对象:page对象代表JSP页面本身,更准确的说它代表JSP被翻译后的Servlet。2) pageContext对象:-javax.servlet.jsp.pageContext接口,提供了对JSP页面内使用到的所有对象及名字空间的访问,提供了几种对页面属性的访问,允许向其他应用组件转发。3) request对象:request对象是HttpServletRequest接口的实现类,封装了客户的请求信息,request的生命周期由JSP容器控制,当接收到一个客户端请求,JSP容器创建并封装request对象,当请求处理完毕,request对象被销毁。4) response:response对象封装了服务器响应客户端请求的相关消息,主要功能:设置头信息,实现了javax.servlet.http.HttpServletResponse接口,生命周期由容器来管理。5) session:处理客户端与服务端的会话,从客户端连接到服务端开始,session对象用来保存每个用户的信息,以便跟踪每个用户的操作状态,其中,session信息保存在容器里,session的ID保存在客户机的Cookie中,用户首次登陆系统时容器会给用户分配一个唯一的session id标识。用于区别其他的用户。6) application:保存Web应用程序中共有的数据,可存放全局变量服务器启动后自动创建application对象,该对象一直有效,直到服务器关闭。用户对该对象属性的操作将影响到其他用户7) config:config对象是JSP页面通过JSP容器进行初始化时被传递的对象,封装了JSP配置参数的信息.可读取web.xml中配置的初始化参数8) out: out对象用来向客户端输出内容,并管理服务器上输出缓冲区.out对象被封装成javax.servlet.jsp.JspWriter接口。可以使用page指令来改变缓冲区大小9) exception:exception对象实现了java.lang.Throwable接口,用来处理JSP在执行时发生的。JSP的生命周期: 1) 翻译阶段当容器接受到客户端第一次对jsp的请求后,先判断被请求的jsp是否存在,若不存在返回404错误,若存在,将该jsp先翻译成一个Servlet。 2) 编译阶段将Servlet的源文件编译成一个字节码文件,然后由容器将其装载进虚拟机并实例化(单例)。 3) 执行阶段调用Servlet的init()、service方法、destroy()。2.2 JavaBean技术JavaBean是指一个可复用的软件组件。从本质上来说JavaBean是一种特殊的Java类,它经过对相关某一逻辑的属性和方法的封装使其成为具有实现某一特定的功能或者可执行某一特别业务的对象,简称为bean。Javabean具有Java系列一贯的跨平台的优势,以及以下特点:(1)实现了对代码的可重复的利用;(2)容易编写、方便使用、方便维护;(3)可以一次编译后在任何安装了Java运行环境的平台上的使用。JavaBean存在下面四种应用范围:对话范围、页面范围、请求范围、应用范围。(1)对话范围(session):对话范围的JavaBean 主要用于跨多个页面和时间段的信息的处理:如在表单中填写的用户信息等。 (2)页面/请求范围(page/request):页面和请求范围的JavaBean类似于记录表单信息的bean ,这是因为一般情况下它们用于对表单的处理。(3)应用(application):应用范围一般主要是应用在服务器的构件上。例如 JDBC 连接池、应用的监视、某类用户的计数和其他参与用户行为的类。使用javaBean的目的 1)用来封装数据信息,业务,数据访问,事务控制逻辑的代码 2)用来封装jsp中的一些脚本,便于重用,可以减少jsp中脚本的使用 3)作为一个可重用的组件来使用JavaBean按照位置分为:可视化JavaBean位于客户端(eg: 在Swing中处理事件的JavaBean)和不可视化JavaBean位于服务端,用于封装数据信息,业务,数据2.3 Servlet技术Servlet本质是用Java语言编写的程序,具有独立于平台和协议的特点,并且是在服务器端运行的Java应用程序,借助于Servlet可以生成具有动态效果的Web页面。Servlet负责Web浏览器或者其他的HTTP客户程序发出的请求,是位于服务器的应用程序之间的或者应用程序与数据库之间的中间层。Servlet是供用户扩展的组件,能够运行在Servlet容器中。Servlet容器负责接收Web客户的HTTP请求并且向Web客户发送HTTP响应。2Servlet原先是指位于服务器上的运行的Java语言的小程序。它是创造于Java applet的环境下的一个词。Applet是只在Web浏览器中运行的小程序。Applet是作为网页的一部分被自动下载的(就像网页中的图片被自动下载一样)。当applet被激活时,它便开始执行程序。这正是它的优雅之处。3这里的想法很简单:用户从Internet下载Java字节码,并在自己的机器上运行。在网页中运行Java程序成为applet。为了使用applet,需要启用Java的Web浏览器执行字节码。用户下载一个applet就如同在网页中嵌入一幅图片。applet成为了页面的一部分。4通常情况下,它为用户提供运算服务或者根据用户交互作用定位图形的服务等等。服务器上需要有一些具有特定功能的程序,通常的时候它们实现了根据用户的输入信息来访问数据库的功能。而实现这些功能一般是利用了公共网关接口(CGI)应用程序。鉴于Java程序的优势,如果在服务器上运行的这类应用程序使用Java编程语言实现,会得到更好地响应速度。尤其是在访问量较大的服务器上,Java servlet由于把各个用户访问请求激活成了单独的程序进程中的一个线程来响应,这使得各个访问请求所占用的系统资源相对减少,从而在执行的速度上超越了CGI程序的执行速度。具有更好的用户体验。servlet的生命周期:1.装载并实例化servlet(同一个servlet在整个生命周期中只有一个实例)。分为两种装载方式: 1).延迟加载(tomcat默认的加载方式) 当客户端发起第一个请求第一次访问servlet时,容器会将Servlet装载进虚拟机并实例化,第二次以后去访问同一个servlet容器就不会再装载并实例化。 2).预先加载当web server启动时,web容器加载web应用时把servlet装载进虚拟机并实例化。这种方式需要在web.xml中进行配置numnum=0:采用预先加载(值越小越先被加载)num0:采用延迟加载。 2.init方法的调用,用来初始化servlet。当Servlet被装载并实例化后,容器会调用init方法对Servlet进行初始化,只有在init方法调用成功后,Servlet才处于service状态,能够处理客户端的请求。注意:1).在整个Servlet的生命周期中init方法仅被调用一次2).用户自定义的servlet可以覆盖无参或有参的init方法,如果覆盖有参的init的方法,建议使用super.init(config)对config进行初始化,如果覆盖的是无参init方法不需要对config进行初始化,直接使用,推荐使用无参。3).用户可以不用去覆写init方法,覆写init方法只是为了使用方便(比如获取web.xml中的配置信息)。3.service方法的调用,用来处理客户请求。当Servlet被装载实例化并初始化后,客户端发起请求,容器就会调用Servlet实例的service方法对请求进行处理。 注意: service方法在生命周期中被调用多次,这跟请求的次数有关。4.destory方法的调用,用来销毁servlet。当容器在销毁Servlet实例前会先去调用destroy(),在此方法中可以作下列工作:1) 恢复一些初始化的变量。2) 释放资源。3) 控制所有运行在Servlet中的线程在Servlet实例被销毁之前能正常运行结束。4) 记录日志信息。注意: 1) destroy()在生命周期中仅被调用一次。 2) 用户定义的Servlet中可以不覆盖destroy()。2.4 MyEclipse开发工具MyEclipse即企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)。作为Eclipse的扩展开发的工具,MyEclipse在WEB程序开发方面具有更出色的表现。对于时下流行的框架技术集成一体化,大大方便了开发人员进行程序的一体化开发。它完整支持了HTML, SSH,JS, CSS,JSP, SQL等技术,更是就一个功能丰富的J2EE集成开发环境,涵盖了完整的编码、调试、测试以及发布的功能。从组成结构上来看,Eclipse中对于数据库服务、开发帮助、EJB开发工具、应用程序服务器的连接器、J2EE模型、WEB开发工具、J2EE项目部署服务这七大类功能,每一种都有相应的功能部件,并通过一系列的插件来实现这些功能。而MyEclipse对此则从结构上分别进行了模块化,使得对任一模块进行单独的扩展和升级都不会对其他的模块的功能的实现产生影响。2.5 Access数据库技术该聊天室系统使用微软Office系列应用软件之一的Access数据库。Access 作为一款基于Windows的桌面关系数据库管理系统(RDBMS),它提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象;同时它也提供了多种功能向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作进一步规范化;为建立功能完善的数据库管理系统提供了方便,也使得普通用户不必编写代码,就可以实现对大部分数据的管理任务。由于Java SDK中已经包括了相应的驱动程序,并且许多开发人员都安装有Acess,故而它是练习和实验的绝佳选择。然而,在正式的应用中一般不太可能使用Microsoft Access,因为它的设计目标就非针对处理大量的并发连接。5Access作为一种关系型的数据库管理系统(关系数据库应用数学方法来处理数据库的数据。关系数据库系统是支持关系模型的数据库系统。关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。6)其主要特点如下: (1)存储方式单一 (2)面向对象 (3)界面友好、易操作 (4)集成环境、处理多种数据信息 (5)Access支持ODBC(开发数据库互连,Open Data Base Connectivity)等。2.6 Tomcat应用服务器技术本聊天室系统选用Apache Tomcat Server应用服务器为服务器,该应用服务器是Apache Jakarta软件组织下的子项目之一。Tomcat是一个JSP/Servlet容器,它是在SUN公司的JSWDK(Java Server Web Development Kit)基础上逐渐的发展,扩充,完善起来的一个JSP和Servlet规范的标准实现,借助于Tomcat可以体验JSP和Servlet的最新规范。在开发JavaWeb应用时,不需要从头创建Servlet容器,而只需要选择第三方提供的Servlet容器,比如Tomact,它是一个开放源代码的Servlet容器。开发人员的主要任务是扩展javax.servlet.http.HttpServlet接口,创建能提供特定服务的Servlet子类。把开发人员自定义的Servlet类发布到Servlet容器中,Servlet容器就能与这些Servlet协作,Servlet容器根据Web客户的请求,调用相关Servlet对象的方法来实现响应请求。7在Tomcat中,对于应用程序的部署工作,只需要将你的WAR放到Tomcat的webapp目录下,服务器的自动检测功能会为你找到并且解压该文件。当从浏览器中访问该应用的Jsp时,由于Tomcat需要把Jsp转化为Servlet文件,然后编译,所以第一次的响应速度不会很快,但是一次编译后,访问的响应速度将明显提高。Servlet容器在第一次调用JSP时,会自动编译,然后这个JSP就驻留内存了。所以我们在调用JSP时,第一次总会有一定的延时,在接下来的调用中就不会再有延时了。8安装Tomcat需要设定以下两个系统环境变量: 9l JAVA_HOME:JDK的安装根目录l CATALINA_HOME:Tomcat的安装根目录3 系统分析3.1 系统设计的目的和意义自计算机诞生半个多世纪以来,应用领域几乎涉及了社会的各个方面。它的便捷、实用、高效率,在社会诸多领域发挥着巨大作用。从军事到民生,从科研到生活。尤其是在网络的出现之后,信息资源的广泛传播与共享成为了可能。随着信息资源日益成为社会的焦点,一种新颖的,直接的交互方式随之产生。当然这种交互的内容不仅限于指数据、信息之间的传递,同时包含着人与人之间的交流。应运而生的各种聊天软件和在线聊天室正是承载着这一交互功能的媒介。伴随着互联网时代的到来,人们的生活方式发生了显著的变化。借助于便捷的网络进行即时方便的交流,距离不再是思想交流的障碍。WEB聊天室为大家提供一个更好的交流平台,人们不仅可以通过文字还可以选择表情符号进行实时的交谈、聊天。WEB聊天室面向因特网开放,是提供给众多用户的一个开发的娱乐平台,借助聊天室用户完全可以自己主动选择聊天的对象,创造私下交流的机会,从而建立众多用户之间相互交流、传递情感的绿色通道。巨大的市场需求催生了众多的WEB聊天室,诸多主流网站都提供这一功能用以集聚人气,吸引网民。本Web聊天室主要利用JSP(JavaServer Pages)技术实现的。主要的功能有:查看当前的在线用户、多人参与的会话聊天、悄悄话聊天,以及修改用户密码、修改用户个人资料、更换所在聊天房间,并提供多种表情动作选项。3.2 系统功能(1)实现用户的注册与登录功能,只有经过身份验证的用户才能进入聊天室。(2)实现聊天室基本功能,用户能正常发言。而发言的接收对象能接收到信息。聊天分为输入区域和显示区域。通过勾选悄悄话与选择对话对象可以说悄悄话;(3)通过查看相关聊天室人数情况,可以选择房间并进入聊天室;(4)在线人员记录区,记录在线聊友情况;修改自己的密码及基本资料。(5)聊天输入区,让聊友可以自行发表言论并且有相应的个性化表情发表网友的观点。(6)在聊天过程中用户可以随时更改房间。(7)用户初始为普通权限,只有在积分超过1000分时才拥有高级权限即成为高级用户,高级用户有权利维护聊天室的正常环境秩序,将不遵守聊天室公共秩序的用户踢出禁言。4 系统设计4.1 系统总体设计设计模式是面向对象设计中常见问题的类级与方法级的解决方案。模式是做事的方法,是实现目标,研磨技术的方法。10本系统在主页面使用了框架,多数页面均包含有首页面(head.jsp)和尾页面(foot.jsp), 一些用于判断的页面使用了servlet控制。本聊天室还拥有两张图片,即背景图片和首页面的图片。图4.1 系统总体模块该聊天系统主要由用户注册、用户登录、主聊天室和一些修改功能组成,系统的总体流程图如下所示:图4.2 系统总体流程图欢迎模块即整个聊天室的首页,作为欢迎页面带领用户进入本聊天室。欢迎页面上拥有用户登录以及用户注册两个页面链接。用户模块由用户注册单元以及登录单元构成,链接进行用户注册和登录使用的两个页面。图4.3 用户模块用户注册单元包含用户名、密码、性别、年龄、邮箱、以及用于密码保护的问题和回答。对用户所填写的信息以表单形式进行封装,验证机制通过JS来完成,主要内容为:对用户所填信息格式以及规范进行验证。只有填写的所有内容都符合要求之后,才能提交表单信息。表单提交后交给servlet控制器转发给相应的页面。在转发之前通过javabean获取请求中表单的内容并进行处理并将结果返回给转发器。转发器根据返回的处理结果判断转发方向。如果用户注册的用户名在数据库中有记录表示该用户名已经被注册过。返回信息为错误,提示用户名已经被注册。如果户名在数据库中没有记录,返回信息为成功。表单信息就会被插入到数据库的user表中。整个过程的流程图如下所示:图4.4 用户注册流程图用户登录使用先前注册的身份,对登录信息进行验证与数据库中的记录信息进行比对。其中js验证信息规范是否符合要求,javabean提取请求中表单内的信息与数据库比对。最后由servlet根据返回信息决定请求的转发。用户每成功登录一次其积分就自动增加加2分。对于积分累积超过1000分的提高权限为高级用户,也即是具备管理员的功能。可以有踢人的权限。用户登录的流程图如下所示:图4.5 用户登录流程图登录的实现通过提交用户名和密码与数据库中的记录验证是否一致,即是否有该用户名并且密码是否正确。对于数据库中不存在该用户名的情况,显示用户名不存在的提示信息;反之,如果身份验证通过,就将页面转到聊天室房间的选择界面,查看聊天室人数情况并进行聊天室的选择。登录的同时将用户名记录在session中。选择并进入房间时从session中拿到用户名并利用用户名在user表中查询当前用户的积分。对查询出的用户积分做保存操作记录到到session中,在聊天主页面中显示出该用户的积分。同时写入该用户的用户名、所选房间和用户积分到userlist表中。以便于在聊天主页面中查看在线聊友的链接页面里能被显示出来。逻辑流程图如下所示:图4.6 用户登录验证、保存流程图聊天页面包含有输入单元,显示单元,基本操作单元以及处理单元共四个单元。基本操作单元包括在线用户列表的查看、用户资料修改、用户密码修改;改换房间、用户注销。在这个模块也显示了用户目前所在的聊天房间。处理单元将从输入单元输入的信息处理后在显示单元显示出来,其本身是隐藏的。图4.7 聊天模块基本操作单元中,借助用户列表(user)显示当前聊天室系统的在线用户的用户名、积分以及进入的聊天室名称。查询在线聊友数据表(user-list),显示用户的一些关于聊天的基本信息。基本操作单元中,可以根据用户名以及设置的问题和问题回答对用户的基本资料中的年龄和邮箱进行修改。通过session中保存的请求的信息可以获得用户名。根据所输入的用户名和问题的答案与数据库中的信息比对判断的sql语句完成修改。用户资料修改的流程图如下所示:图4.8 用户资料修改流程图基本操作单元中,对于用户密码的修改的实现,sql语句首先拿session中保存的传入的用户名查询在数据库中所匹配的记录,再拿数据库中的旧密码与输入的旧密码做相等判断,只有匹配的情况才可以执行修改操作。用户密码修改的流程图如下所示:图4.9 用户密码修改流程图基本操作单元中,用户注销分为两个步骤。首先是在线用户表中当前用户信息的删除,然后把session里的当前用户的信息清空,从而实现用户的注销操作。显示模块的功能实现即指用户的发言区,当前用户的所有谈话记录都会在这里显示。显示内容可以是公告也可以是对所有人的聊天或者是与某人悄悄话的私聊话语。特别是在私聊的情况下,聊天内容只会在自己与聊天对象的发言区显示,其他的用户的发言区是不显示的。发言区中消息的获取或者是输入区得到(当前用户的发言内容),或者是聊天室系统信息的自动生成(有用户进入或者有不遵守规范的用户被踢出聊天室的提示信息)。聊天室允许用户通过是否勾选悄悄话进行聊天对象的选择,多人参与的会话或者是只与某人的私下的悄悄话聊天。鉴于聊天的内容会很多,通过window.scroll()函数控制在显示区的信息条数,从而当信息条数多于显示页面允许的条数时可以生成滚动条自动滚动显示,让最新消息显示在当前区域中。当然也允许用户查看过去的聊天记录,通过显示页面来实现。默认聊天内容的记录在信息未清除(一般情况下,聊天记录内容默认设置为服务器重启后或者当前的用户发言在超过200条时会自动清除,以便节省资源提高效率)之前可以显示在该页面上。输入单元是聊天室系统中主要单元,用于实现用户的发言功能。通过输入区,可以实现用户的发言操作,用户选择聊天对象,用户发言时表情用语,以及退出私聊或者直接退出聊天室。输入区作为用户的主要操作界面,在这里用户在文本区域内输入信息就可以给所有用户发言(默认是给所有人发送信息),在文本框内输入有意向的聊天对象并且勾选“悄悄话”选项,就可以建立私下的聊天,而当前用户的发言内容被限制在他自己以及输入的聊天的对象那里的显示区可以显示,其他人的显示区域是不显示的。如果只写对象名而没有勾选“悄悄话”(即退出私聊模式),则包括输入聊天对象在内的所有在线聊友都可以看到他的发言以及所选择的对象。为了更好的表达,有表情用语、字体、字体颜色、字体样式等的辅助项,通过下拉式列表框可以直接选择,所有这些组合的文字将作为用户的发言内容。注销操作通过点击离开按钮,通过调用用户登出页面(logout.jsp),实现当前用户信息在当前用户列表的session中删除,同时将在线用户表中的相关信息予以删除操作。如果有对本聊天室的使用上的疑问,可以点击“聊天帮助”链接,调用相关页面了解本聊天室的使用说明。对于积分大于1000的用户可以通过点击“高级功能”链接行驶管理权限即踢出其他违反聊天室聊天规范的在线用户。高级功能,即用户在积分大于1000分以后具有的管理员形式的功能。用户只有在积分大于1000分时,该功能才会被启用。通过该功能可以便于聊天室的规范,高级功能开启的用户通过下拉框选择踢出的对象,操作成功后显示区域提示所选用户被提出信息。其他用户可以给被提出的用户留言,但被踢出的用户将不允许再聊天也就不能看到的留言。一旦用户被提出,可以正常登录聊天室,但正常的聊天只能在服务器重启之后。用户聊天功能流程图主要情况如下所示:图4.10 用户聊天主要流程图4.2 系统数据库设计4.2.1 数据库Java程序通过JDBC驱动程序与数据库相连,执行查询、提取数据等操作。Sun公司还开发了JDBC-ODBC Bridge,用此技术Java程序就可以访问带有ODBC驱动程序的数据库。目前大多数数据库系统都带有ODBC驱动程序,所以Java程序能访问诸如Oracle、Sybase、MS Access等类型的数据库。11聊天室系统出于方便的考虑,选择Microsoft Office Access数据库。数据库共建有有两张表user表,以及user_list表,数据库所有表的截图如下:图4.11 数据库所有表4.2.2 基本表的设计数据库系统中的E-R图如下所示:图4.12 注册用户E-R图图4.13 在线用户E-R图本数据库系统中有注册用户信息表(user表)以及在线用户信息表(user_list表)两张表。表4.1注册用户信息表(user表)字段名称数据类型字段大小是否主键说明username文本50是用户名Psw文本50否用户密码Sex文本50否性别Age文本50否年龄Mail文本50否电子邮箱question文本50否注册问题Reply文本50否问题回答Integral文本50否用户积分Datecompare文本50否登录时间表4.2在线用户信息表(user_list表)字段名称数据类型字段大小是否主键说明username文本50是在线用户名chatroom文本50否用户所在聊天室integral文本50否用户积分5 功能实现5.1 用户注册与登录功能5.1.1 用户注册用户注册模块由三部分构成:JSP、JavaBean和Servlet。其中显示部分由JSP实现,在JSP页面中通过使用Javascript进行验证,具体为对用户所输入的信息在以表单的形式发送请求之前进行基本规范的验证。符合规范的表单会被封装进请求中发送到Servlet中。Servlet中调用相应的JavaBean与数据库中的信息进行比对判断,未被注册的用户才允许注册成功。在这一过程中JavaBean封装并处理表单中的信息,处理的结果返回为相应的信息:失败则返回注册页面,而成功可点击登录连接跳转到登录页面。该部分功能实现如下所示:图5.1用户注册页面图5. 2用户注册成功图主要实现部分代码为: private String username;public String getUsername() return username;public void setUsername(String username) this.username = username;boolean valid = false;String username = rtb.getUsername();RegisterBean rb = new RegisterBean();rb.setUsername(request.getParameter(username);RegisterCheckBean rcb = new RegisterCheckBean(rb);if (rcb.validate()out.println();out.println();out.println(该用户已经存在,请重新注册!);out.println();5.1.2 用户登录用户登录功能,如同用户注册功能的实现借助了JSP,javabean以及servlet等技术的集合。在用户注册功能中,对于注册成功的情况,立即将输入的用户信息记录进数据库内。在用户登录功能中,对于输入的用户信息与数据库中记录的信息作匹配判断,匹配结果为true的跳转到登录成功后选择聊天室的页面。其功能实现的代码类似于用户注册功能的实现。具体实现如下图所示:图5.3用户登录页面图5.4用户登录成功页面5.2 用户选择聊天房间功能5.2.1 用户登录时选择聊天室房间用户登录成功后页面跳转到选择聊天室的房间的页面。页面上显示聊天室中的已有的房间,供用户自主选择喜欢的聊天房间。在用户登录成功并在聊天房间选择页面选择聊天房间点击进入聊天室后,用户名、用户的积分以及所选择的聊天室房间信息自动添加进user_list表中,而表中的在线用户的信息只有在用户注销或被高级用户踢出后,相应的用户信息才会从user_list中删除。该部分主要的功能实现图如下所示:图5.5 聊天室选择页面主要实现代码为: private String chatroom;public String getChatroom()return chatroom;public void setChatroom(String chatroom)this.chatroom = chatroom;stmt.executeUpdate(insert into user_list values(+username+,+chatroom+,+integral+);valid = true;ChooseBean cb = new ChooseBean();cb.setUsername(request.getParameter(username);cb.setChatroom(request.getParameter(chatroom);ChooseCheckBean ccb = new ChooseCheckBean(cb);if(ccb.validate()goToPage(main.jsp, request, response);用户的相关信息是在经由JavaBean处理过程中被添进相应的数据库中表的。5.2.2 用户聊天时更改聊天室房间用户聊天时,主页面右侧有休闲娱乐一栏。该栏有一下拉框,供用户自主选择喜欢的聊天房间。在用户选择好聊天室房间后点击换个房间后,用户名、用户的积分以及所选择的聊天室房间信息自动更新进user_list表中。该部分主要的功能实现图如下所示:图5.6 更换聊天室房间之前图图5.7 更换聊天室房间之后图5.3 用户聊天功能本系统的主页面基于框架技术实现。需要支持框架的浏览器进行浏览访问。在主页面中,集成显示的页面(show.jsp)、输入的页面(input.jsp)、处理的页面(transact.jsp)以及用户信息修改的页面(right.jsp)。5.3.1 显示功能显示页面中实现了用户发言的显示功能,同时可以对过去一段一部分聊天记录的查看,系统的相关提示信息也在这里显示。其实现功能图如下所示:图5.8 显示聊天内容功能图主要实现代码为:function GetData(url) url = class_method.jsp?action=transact.jsp;try DataLoad.src = url; catch (e) return false;var tim

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论