版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、web开发课程设计报告(2011 2012学年 第 2 学期)题 目: 聊 天 室 专 业: 计算机网络技术 班 级: 1班 姓名学号: xxx(1007052139) 指导教师: 楚 志 凯 成 绩: 商丘职业技术学院计算机系2012年6月5日目 录目 录ii1 概 述11.1 设计目标11.2 项目规划11.3 开发工具的选择22 需求分析32.1 需求分析32.2 数据库表设计4 3 系统总体设计63.1系统结构64系统功能模块实现74.1 登录和注册界面模块74.2 选择聊天室界面模块104.3 聊天室主界面模块124.4 用管理员高级功能管理模块205 调试分析286心得体会29致
2、谢30参 考 文 献31ii1 概 述1.1 设计目标 从功能角色上来讲,在线聊天室可以有两种类型的用户,普通用户和管理员。 其中,普通用户在登录后,可以选择性的进入不同的聊天室,并通过聊天界面,向一人或多人发送聊天消息,进行聊天交流。如果是第一次进入到该聊天室,还可以通过本模块提供的注册功能,提交注册信息,成为本聊天室的用户。 管理员在登陆后,除了可以聊天外,还可以拥有各种管理的权限,比如查看所有在线用户信息,还可以把一些不遵守聊天规则的用户赶出聊天室,甚至从数据库里把一些恶意聊天用户除名。1.2 项目规划本聊天室需要提供如下的界面和功能。 1、需要提供支持用户登陆以及身份验证的web界面和
3、实现后台对应功能的模块。在这个模块中,能根据登入者拥有的权限,分别开放不同的权限。 2、需要一个支持用户注册的界面和对应的后台模块。 3、需要为普通用户和管理员提供一个浏览所有聊天室的界面和对应后台功能模块。在这个界面中,用户可以选择性的进入不同的聊天室。 4、需要为普通用户和管理员提供一个支持多人聊天的界面和对应的后台模块。在这个界面中用户和管理员可以选择聊天对象,也可以想聊天对象发送信息。 5、需要为管理员提供一个查询所有用户的界面和对应的功能模块,这个界面其实就是管理员实现其管理功能的界面,在这个界面里,管理员可以实现“赶人”的功能,也可以实现“删除聊天用户”的动作。1.3 开发工具的选
4、择 jsp(javaserver pages)是由sun microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。jsp技术有点类似asp技术,它是在传统的网页html文件(*.htm,*.html)中插入java程序段(scriptlet)和jsp标记(tag),从而形成jsp文件(*.jsp)。用jsp开发的web应用是跨平台的,即能在linux下运行,也能在其他操作系统上运行。 jsp技术使用java编程语言编写类xml的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和 scriptlets访问存在于服务端的资源的应用逻辑。jsp
5、将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于web的应用程序的开发变得迅速和容易。web服务器在遇到访问jsp网页的请求时,首先执行其中的程序段,然后将执行结果连同jsp文件中的html代码一起返回给客户。jsp与java servlet一样,是在服务器端执行的,通常返回该客户端的就是一个html文本,因此客户端只要有浏览器就能浏览。jsp的1.0规范的最后版本是1999年9月推出的,12月又推出了1.1规范。目前较新的是jsp1.2规范,jsp2.0规范的征求意见稿也已出台。 jsp页面由html代码和嵌入其中的java代码所组成。服务器在页面被客户端请求以后对这些ja
6、va代码进行处理,然后将生成的html页面返回给客户端的浏览器。java servlet 是jsp的技术基础,而且大型的web应用程序的开发需要java servlet和jsp配合才能完成。jsp的优势(1)一次编写,到处运行。在这一点上java比php更出色,除了系统之外,代码不用做任何更改。(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比asp/php的局限性是显而易见的。(3)强大的可伸缩性。从只有一个小的jar文件就可以运行servlet/jsp,到由多台服务器进行集群和负载均衡,到多台application进行事务处理,
7、消息处理,一台服务器到无数台服务器,java显示了一个巨大的生命力。(4)多样化和功能强大的开发工具支持。这一点与asp很像,java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。 2 需求分析2.1 需求分析21世纪是网络的时代,internet的普及已经影响了传统的交流方式。网络聊天室系统是计算机网络发展的产物,是最为常见、最受广大互联网使用者所认可的基于web的网络应用系统。随着互联网的发展,人们通过网络可以更方便快捷地进行信息交流和学习,聊天系统可以为大家提供一个更好的交流平台,在这个平台上,人们可以通过文字与符号进行实时的交谈、聊
8、天,它是一个向整个因特网开放的地方,是提供给网民一个交友与娱乐的场所,在聊天室里网民可选择自已的聊天对象,与其进行对话交流,是网民之间相互沟通、交流情感的最佳方式之一。从传播方式上讲, 聊天室传播是非线性传播。非线形传播指聊天室传播的信息是为无数的共享空间的网络用户所发出的, 任何拥有网络传播权利的人都可以得到, 网络打破了传统媒体单向传送信息的格局, 信息传播者与接收者之间的互动变得切实可行。从传播的信息内涵上讲, 聊天室的消息结构是无中心的。聊天室所给受 众带来的信息与感受作为一种现代生活资源, 在实现了从传统大众传播的单向传播向多向传播的转变后, 极大地拓展了现代生活空间, 使传播者与受
9、众之间的直接连通成为可能。这一转变使整个传播结构与传播效果发生了巨大变化, 是传统媒体无法比拟的。 根据cnnic 发布的第十五次中国互联网络发展状况统计报告, 有3.5%的商业网站提供网络聊天。热衷于网上聊天的人群大部分集中于1624 年龄段上, 经济上没有独立, 又缺乏网上支付手段的特点也是聊天室不为商业网站看好的重要理由之一。目前经营商获得收益的渠道有两条: 在线广告和电子商务。青少年在经济上没有自立, 经营商通常很难通过电子商务获得收入; 而在在线广告方面, 各商业网站目前的广告客户主要目标人群锁定中、高收入的白领阶层, 面向青少年消费市场的网上广告几乎没有, 无法通过网上广告获得收益
10、。因此, 对于青少年聚集的网上聊天室, 网络公司自然没有太高的热情。 实际上, 青少年的消费市场一向是规模可观、利润丰厚的一块大蛋糕。无论流行音乐、新潮服饰、娱乐场所, 青少年消费都是其中的主力。论市场规模, 全国青少年消费市场的总规模不低于一千亿。我们看到, 并非聊天的人群本身缺乏商业价值, 而是目前没有好的办法将这种价值加以发掘。在线广告理应成为聊天室获得商业收益的主要手段。 随着研发技术的进步,qq.msn等聊天软件的面世,取代了聊天室。同时,聊天室内用户过激,不法等言辞,也是聊天室逐渐没落的原因。但是,聊天软件的局限性,不比聊天室开放性强,面向广。只有真正了解聊天室的主要使用人群, 才
11、能更好地设置聊天室的主题、话题、页面风格等。要重视聊天室产品的氛围经济效益, 可以成为各种汽车俱乐部、攀岩俱乐部、自行车俱乐部等的合作伙伴, 吸引更多会员,成为网上会所。聊天室还应注意自身形象的塑造, 只有个性化、特色化才能使聊天室产品脱颖而出。要注意适当的广告宣传。在以上的种种因素下,本课题的研究方向就是运用jsp技术营造一个简单,友好的网络聊天室,为互联网使用者提供学习,讨论和交流的平台。2.2 数据库表设计在chatroom数据库中建一个名为userinfo的表,如表3.2所示。列名数据类型长度可否为空说明idint11not null索引号,主键,自增nicknamevarchar50
12、not null用户昵称、用户昵称userpasswordvarchar50not null用户密码roletinyint1not null用户权限0代表普通会员,1代表管理员lastlogintimedatenull用户最后登陆时间表3.2userinfo数据表 在chatroom数据库中新建一个名为msginfo的表,用来保存聊天信息。在显示聊天记录时,可以通过查询语句对不同的用户显示不同的信息。如表3.3所示。列名数据类型长度可否为空说明idint 11not null索引号,主键,自增chatroomvarchar50not null聊天信息对应的房间msgfromvarchar50n
13、ot null聊天信息发言人msgtovarchar50not null聊天信息发表对象chattimedatetimenot null聊天信息发表时间chatactionvarchar50null聊天信息的动作和表情msgcontentvarchar200not null聊天信息的内容secrettinyint1not null0代表非悄悄话,1代表悄悄话表3.3msginfo表 在chatroom数据库表中新建一个名为onlineuser的表,用来保存在线用户信息。如表3.4所示。列名数据类型长度可否为空说明idint20not null索引号、主键、自增chatroomvarchar50
14、not null l用户所在的房间nicknamevarchar50not null用户的昵称lastchatroomdatetimenull用户最后发言时间denyroomvarchar255null用户被封的时间表3.4 onlineuser表3 系统总体设计3.1系统结构 本系统将分为四大模块,即数据库通用模块、用户登录与注册模块、聊天主模块、管理员模块,具体描述如表3.1所示。模块名文件名功能描述数据库通用管理描述baseconn.jsp连接和数据的查询更新操作用户登录与注册模块login.jsp用户登入界面chklogin.jsp用户登录后台处理界面checklogin.java封装
15、登陆后的javabean聊天室模块chksession.jsp检查session信息判断用户是否登陆chatroomlist.jsp聊天房间选择界面chatroomlist.java封装选择聊天房间的javabeanchatroom.jsp聊天框架界面redirectchatroom.jsp转向聊天室中转界面input.jsp聊天室输入界面sendmsg.jsp聊天信息发送界面userlist.jsp在线用户列表界面datavalue.jsp聊天信息显示界面logout.jsp离开聊天室changeroom.jsp切换聊天房间message.java聊天信息封装javabeanchatroom
16、.java封装聊天功能的javabean管理员模块advanced.jsp管理员管理高级界面kick.jsp踢人功能delete.jsp删除用户表3.1 系统结构表 4系统功能模块实现4.1 登录和注册界面模块登录界面模块是通过访问数据库中的userinfo表中的name和password两个字段来判断用户名和密码是否匹配,如果匹配就登入成功,否则登入失败,如果用户是第一次登录该聊天室,则自动注册。如图4.1所示。图4.1 登录界面核心代码:package net.chat;import java.sql.*;import java.util.*;import java.text.simple
17、dateformat;public class checklogin public string checklogin(string username,string userpassword) throws sqlexception,classnotfoundexceptionbaseconn conn = null;tryconn = new baseconn();string sql = select * from userinfo where nickname=?;preparedstatement ps = conn.preparedstatement(sql);ps.setstrin
18、g(1,username);resultset rs = conn.executequery();if(rs.next()if(rs.getstring(userpassword).equals(userpassword)simpledateformat cal = new simpledateformat(yyyy-mm-dd hh:mm:ss); string time = cal.format(new java.util.date(); sql=update userinfo set lastlogintime=? where nickname=?; ps=conn.preparedst
19、atement(sql); ps.setstring(1,time); ps.setstring(2,username); conn.executeupdate();return success_login;elsereturn wrong_password;elsereturn none_user;catch(sqlexception ex)ex.printstacktrace();throw ex;catch(classnotfoundexception ex)ex.printstacktrace();throw ex;finallyconn.closedb(); public boole
20、an savetodatabase(string username,string userpassword)throws sqlexception,classnotfoundexceptionbaseconn conn = null; try conn = new baseconn(); simpledateformat cal = new simpledateformat(yyyy-mm-dd hh:mm:ss); string time = cal.format(new java.util.date(); string sql = insert into userinfo(nickname
21、,userpassword,lastlogintime,role) values(?,?,?,?); preparedstatement ps = conn.preparedstatement(sql); ps.setstring(1,username); ps.setstring(2,userpassword); ps.setstring(3,time); ps.setint(4,0); conn.executeupdate(); return true; catch(sqlexception ex) ex.printstacktrace(); throw ex; catch(classno
22、tfoundexception ex) ex.printstacktrace(); throw ex; finally conn.closedb(); 4.2 选择聊天室界面模块 如果登录成功则进入选择聊天室界面的模块,如图4.2所示:图4.2 选择聊天室核心代码: 聊天室列表 欢迎您:希望您在这里聊得愉快! 情感倾诉 人 交友天地 人 龙门客栈 人 var x = 50,y = 60 var xin = true, yin = true var step = 1 var delay = 10 var obj=document.getelementbyid(ad) function float
23、ad() var l=t=0 var r= document.body.clientwidth-obj.offsetwidth var b = document.body.clientheight-obj.offsetheight obj.style.left = x + document.body.scrollleft obj.style.top = y + document.body.scrolltop x = x + step*(xin?1:-1) if (x r) xin = false; x = r y = y + step*(yin?1:-1) if (y b) yin = fal
24、se; y = b var itl= setinterval(floatad(), delay) obj.onmouseover=function()clearinterval(itl) obj.onmouseout=function()itl=setinterval(floatad(), delay) 4.3 聊天室主界面模块此界面由三个用户输入模块、聊天信息显示模块和在线用户列表等三个模块组成,如图4.3所示。图4.3聊天室主窗体核心代码:package net.chat;import java.text.simpledateformat;import java.sql.*;public
25、class message private string chatroom;private string msgfrom; private string msgto; private string chataction;private string msgcontent;private int secret; public void setchatroom(string chatroom)this.chatroom = chatroom;public void setmsgfrom(string msgfrom)this.msgfrom = msgfrom;public void setmsg
26、to(string msgto)this.msgto = msgto;public void setchataction(string chataction)this.chataction = chataction;public void setmsgcontent(string msgcontent)this.msgcontent = msgcontent;public void setsecret(int secret)this.secret = secret;public boolean savetodatabase()throws sqlexception,classnotfounde
27、xceptionbaseconn conn = null;tryconn = new baseconn();simpledateformat cal = new simpledateformat(yyyy-mm-dd hh:mm:ss); string time = cal.format(new java.util.date();string sql=insert into msginfo(chatroom,msgfrom,msgto,chattime,chataction,msgcontent,secret) values(?,?,?,?,?,?,?); preparedstatement
28、ps = conn.preparedstatement(sql); ps.setstring(1,chatroom); ps.setstring(2,msgfrom); ps.setstring(3,msgto); ps.setstring(4,time); ps.setstring(5,chataction); ps.setstring(6,msgcontent); ps.setint(7,secret); conn.executeupdate(); sql = update onlineuser set lastchattime = ? where nickname=? and chatr
29、oom= ?; ps = conn.preparedstatement(sql); ps.setstring(1,time); ps.setstring(2,msgfrom); ps.setstring(3,chatroom); conn.executeupdate(); return true;catch(sqlexception ex)ex.printstacktrace();throw ex;catch(classnotfoundexception ex)ex.printstacktrace();throw ex; /javascript函数,每融2000毫秒(2秒)刷新一次页面 fun
30、ction getdata() var timeoutid = settimeout(window.location.reload(),2000) % string msgstring = ; try string sql = select*from msginfo where id in(select top 30 id from msginfo where chatroom=? order by chattime desc) order by chattime; string username=session.getattribute(_user).tostring(); prepared
31、statement ps = conn.preparedstatement(sql); ps.setstring(1,session.getattribute(_chat_room).tostring(); resultset rs = conn.executequery(); /下面while循环里的程序就是实现控制聊天信息显示格式的功能 while(rs.next() string msgfrom = rs.getstring(msgfrom);/获取聊天信息发送者 string msgto=rs.getstring(msgto);/获取聊天信息接收者 string action = rs
32、.getstring(chataction);/获取聊天表情 string msgcontent=rs.getstring(msgcontent);/获取聊天信息内容 int secret = rs.getint(secret);/获取是否悄悄话 /判断是否系统公告 if(msgfrom.equals(系统公告) msgstring=msgstring+系统公告:+msgcontent+; /判断是否悄悄话 else if(secret=0) /判断是否使用聊天表情 if(action=null|action.equals(no) msgstring=msgstring+msgfrom+对+m
33、sgto+说:+msgcontent+; else msgstring=msgstring+ +msgfrom+action.replaceall(b, +msgto+)+msgcontent+; /如果是悄悄话只在发送者和接收者的页面中显示 else if(msgfrom.equals(username)|msgto.equals(username) if(action=null|action.equals(no) msgstring=msgstring+悄悄话 +msgfrom+对+msgto+说: +msgcontent+; else msgstring=msgstring+悄悄话 +msgfrom+action.replaceall(b, +msgto+)+msgcontent+; catch(exception ex) ex.printstacktrace(); out.println(系统维护); finally conn.closedb(); % parent.loadcontent.innerhtml=; parent.location.hash=position; /javascript函数,实现用户选择特定聊天用户发送消息function performsubmit(user) parent.inputframe.chat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Liposomal-vitamin-B1-生命科学试剂-MCE
- 专题7分数乘法专项(核心知识点速记+典型例题解构+分层训练)-六年级上册数学计算专项讲义人教版
- 2026年宁德师范学院附属宁德市医院编外工作人员招聘12人备考题库(三)及完整答案详解一套
- 中国人民人寿股份有限公司2026届校园招聘400人备考题库附答案详解
- 旅游合同模板(跟团游正规版2025)
- 2026年演出经纪人之演出经纪实务考试题库含完整答案(夺冠)
- 2025海南三亚市教育局招聘编外聘用人员(第4号)(公共基础知识)测试题附答案
- 2026年法律法规考试题库(预热题)
- 2025年襄阳科技职业学院单招(计算机)考试备考题库附答案
- 2026年县乡教师选调考试《教师职业道德》题库及答案1套
- 骨关节疾病危害课件
- 《再见2025欢迎2026》迎新年元旦主题班会
- 猫屎咖啡介绍
- 广西贵百河2025-2026学年高一上学期12月联考语文试题
- 四川省2025年高职单招职业技能综合测试(中职类)汽车类试卷(含答案解析)
- 高考英语阅读理解专项练习100篇
- GB/T 36767-2018醇胺类脱硫脱碳剂净化性能评价方法
- GB/T 16938-2008紧固件螺栓、螺钉、螺柱和螺母通用技术条件
- C语言课程设计-商品信息管理系统
- 中西方建筑对比课件
- 2022年医务科年度工作总结范文
评论
0/150
提交评论