基于JSP的安全在线聊天室系统设计
- 格式:doc
- 大小:259.50 KB
- 文档页数:14
摘要随着即时通信技术的发展,在线聊天室为众多的网民朋友提供了一个交友与娱乐的平台。
在这个平台上,人们可以通过文字与符号进行实时的交谈、聊天,是网民之间相互沟通、交流情感的最佳方式之一。
该课题旨在设计一个以服务器为中介,实现多个终端用户同时在线聊天的聊天室。
系统基于C/S模式,利用Socket套接字实现两台主机之间的彼此通信,并使用多线程技术实现了一个聊天服务器对应多个终端用户,让用户可以在局域网范围内在线聊天。
该课题还对统一建模语言UML在系统的分析与设计中的应用进行了详细的阐述,对于使用面向对象的思想开发同类系统具有很大的指导意义。
同时系统开发过程中融合了诸如JSP、JavaScript、Java Servlet、Hibernate等多种网络开发技术,对于技术的使用有一定的借鉴价值。
关键词:客户端/服务器模式;在线聊天室;UML建模;Java网络编程The Design and Implementation of ElectronicChatroom Based on JSPAbstractWith the development of instant communication technology, online chatrooms provide a platform for dating and entertainment for many net friends. In this platform, people can instantly conversate and chat through words and symbols, which is one of the best ways of affective communication.This paper designs a chatroom, which is a server for intermediary, implementing multiple users chatting online.The system, which is based on C/S model, realizes communication between two computers by using socket, and achieves a chat server corresponding multiple terminal users through using multithreading technology, so that users can chat in LAN.The paper describes the application of UML in systemic design and analysis in detail, which is of great significance for developing the similar system by using object-oriented ideas. And various of technologies of network development are integrated in the system development process, such as JSP, JavaScript, Java Servlet, Hibernate etc, which are of certain reference value for the use of technology.Key words: Client/Server Model;Online Chatroom;UML Modeling;Java Network Programming目录第一章绪论 (1)1.1系统研究的背景、范围和目的 (1)1.1.1系统研究的背景和范围 (1)1.1.2系统研究的目的 (1)1.2 系统的理论依据、实验基础和研究方法 (1)1.2.1 JSP技术简介 (1)1.2.2 UML简介 (2)1.2.3 Java网络编程简介 (2)1.2.4 系统的实验基础和研究方法 (3)1.3 系统结果及其地位、作用和意义 (4)1.3.1 系统结果 (4)1.3.2 系统研究的地位、作用和意义 (4)第二章电子聊天室系统的需求描述 (5)2.1聊天室客户端的用例描述 (5)2.2 聊天室服务器端的用例描述 (7)第三章电子聊天室系统的分析与设计 (11)3.1 聊天室客户端的分析与设计 (11)3.1.1 获取客户端对象 (11)3.1.2 客户端对象的动态关系 (11)3.1.3 客户端界面与类的设计 (15)3.2 聊天室服务器端的分析与设计 (16)3.2.1 获取服务器端的对象 (16)3.2.2 服务器端对象的动态关系 (17)3.2.3 服务器端界面与类的设计 (19)3.3 客户端与服务器端通信类的设计 (20)3.4 数据库的分析与设计 (21)第四章电子聊天室系统的编程和实现 (23)4.1 聊天系统目录结构简介 (23)4.2 客户端主要代码 (24)4.3 服务器端主要代码 (26)4.4 调试运行 (27)结论 (32)参考文献 (33)谢辞 ··········································································错误!未定义书签。
课程名称JAVA Web 应用程序实验名称基于JSP的网络聊天室班级学号姓名一、功能模块:-1.用户注册(注册用户保存在application中)-2.用户登录-3.用户注销-4.留言功能二、要求:- 1.用户注册、登录都要进行客户端检查是否信息为空-2.用户登录之后,服务器端需要检查是否是合法的用户-3.显示的每条信息都包括登录用户姓名、留言内容及留言时间-4.其它内容可以自己扩展三、实验步骤和模块实验总体来说分为三大部分,分别为:用户注册、用户登录和用户留言,其中用户注销为一个小功能,因此不做过多描述1.用户注册首先来介绍第一部分用户注册界面,在该界面中用户填写信息后提交,程序自动将用户姓名和密码保存在application中以便在用户登录时核对信息,源代码为:form.html<html><head><title>Java Web</title><script langguage="JavaScipt">function checkvalid(){var str1=.value;var str2=login.pwd.value;var str3=login.sex.value;var str4=login.pwd.value;var str5=login.pwd2.value;if(str1==""){alert("没有输入用户名");return false;}if(str2==""){alert("没有输入密码");return false;}if(str3==""){alert("没有输入性别");return false;}if(str4!=str5){alert("密码不匹配");return false;}}</script><body><form method="post" action="ex08.jsp" name="login"> <div align="center">name(必须输入项):<input type="text" name="name"><br>passord(必须输入项):<input type="password" name="pwd"><br>passord(重新输入):<input type="password" name="pwd2"><br></div><p align="center">性别(必须输入项):<input Type="Radio" Name="sex" Value="男" Checked>男<input Type="Radio" Name="sex" Value="女">女 </p> <p align="center">户口所在城市</p><p align="center"><select name="City" ><option selected>北京市</option><option>上海市</option><option>天津市</option><option>重庆市</option></select></p><p align="center">曾经居住地</p><p align="center"><select name="juzhu" multiple ><option>北京市</option><option>上海市</option><option>天津市</option><option>重庆市</option></select></p><p align="center">爱好:</p><div align="center"><input type="checkbox" name="JOB" value="上网" >旅游<br><input type="checkbox" name="JOB" value="游戏">游戏<br><input type="checkbox" name="JOB" value="看电影">看电影<br><input type="checkbox" name="JOB" value="看书">看书<br><input type="checkbox" name="JOB" value="听音乐">听音乐<br><input type="checkbox" name="JOB" value="其他">其他<br><p align="center">用户备注信息:</p><p align="center"><textarea name="liuyan" rows="10" cols="30"></textarea></p><div align="center"><input type="reset" name="reset" value="重置"><input type="submit" name="submit" onClick="return checkvalid()" value="提交"></div></form></body></html>值得注意的是,在注册界面一定要完成任务要求,即进行客户端检查是否信息为空,同时密码两次输入是否匹配。
jsp实现简单聊天室application的应用。
application 对象对应了一个全局全域变量的观点,随服务器的开始工作封闭而始于删除。
application 对象生存本身数据,共用一个进程项空间,不论什么客户不论什么时候转变它,其它客户都可以看见转变,所以可用application 对象来存放公共的聊天信息。
分成三个页面,通过彼此调用来完成聊天室,index.jsp用作登录界面,ChatRoom.jsp主聊天页面,作聊天内容显示和提交处理,say.jsp是聊天信息处理页面。
主要源码:(1)登录页面index.jsp,就是session(设置属性用来存储用户的姓名)和application(可用来存储所有用户的姓名,从而判断当前用户是否重复登录;存储历史聊天记录)的初始化工作,之后重定向到主聊天页面(可参考课件中相关代码)。
(2)主聊天页面ChatRoom.jsp有两部分:form表单用于输入提交处理聊天信息;另外一部门用于显示聊天内容。
<%@page contentType="text/html;charset=GB2312"%><%@page import="java.util.*"%><form method=post action="say.jsp"><input type="text" name="mywords"><input type="submit" value="提交处理"><input type="reset" value="重置"></form><hr /><%ArrayList al_say=new ArrayList();al_say=(ArrayList)application.getAttribute("say");for (int says=0;says<al_say.size();says++){%><%=al_say.get(says)%><br /><%}%>(3) 聊天信息处理页面say.jsp实现接收提交处理的聊天信息,放到application中,供主聊天页面ChatRoom.jsp显示聊天内容<%@page contentType="text/html;charset=GBK"%><%@page import="java.util.*"%><%String mywords=new String (request.getParameter("mywords").getBytes("iso-8859-1" ));ArrayList al_say=new ArrayList();al_say=(ArrayList)application.getAttribute("say");al_say.add(mywords);//将更新后的聊天记录写回到application的"say"属性中。
JSP绘图聊天室系统设计与实现的开题报告一、研究背景和意义随着互联网技术的发展和普及,网络聊天室已经成为人们进行在线交流、社交和娱乐的重要方式之一。
而在聊天室中,图形交互也越来越得到青睐,尤其是对于一些需要协作绘图或者实时展示数据可视化的场景来说,图形交互非常重要。
如何实现卓越的聊天室体验,成为了一个值得研究的课题。
Java作为一门跨平台的编程语言,具有良好的可移植性和跨平台的兼容性,在Web应用程序中被广泛运用。
而JSP(JavaServer Pages)技术是Java EE技术中一个重要组成部分,提供了一种动态生成HTML页面的技术,非常适合Web应用程序的开发。
利用JSP技术异步通信技术和HTML5 Canvas绘图技术,结合WebSocket、XMLHttpRequest等技术,可以实现一个高效、流畅、即时绘制的绘图聊天室。
本项目旨在通过研究设计和实现一个基于JSP技术开发的绘图聊天室系统,探索如何利用JSP技术实现WebSocket实时通信、Canvas绘图,提供用户与用户之间即时绘制、在线协作绘图等功能,为用户提供更好的在线交流、协作服务。
二、项目目标和内容2.1 项目目标本项目的主要目标是设计和实现一个基于JSP技术的绘图聊天室系统,前端使用HTML5 Canvas绘图技术,后端使用WebSocket技术实现实时通信,以及XMLHttpRequest技术实现异步通信和离线消息推送,提供用户之间即时绘制、在线协作绘图等功能。
同时,聊天室的整体设计需要考虑用户交互、数据安全、性能等方面,并且需要具备良好的用户体验。
具体目标包括:(1)实现用户注册、登录、登出、个人信息管理等基本功能;(2)实现在线聊天、绘图、撤销操作、清空画布等常用功能;(3)实现多人协作绘图,支持同时绘制、查看、修改画布;(4)实现聊天室的数据持久化,确保数据安全;(5)实现离线消息推送,支持用户后台运行时接收即时通知。
在线答疑功能模块总结一、实现原理1.在线用户统计一种是页面刷新由用户控制,服务器端控制一个超时时间比如30分钟,到了时间之后用户没有动作就被踢出。
这种方法的优点是,如果用户忘了退出,可以防止别人恶意操作。
缺点是,如果你在做一件很耗时间的事情,超过了这个时间限制,submit的时候可能要再次面临登陆。
如果原来的叶面又是强制失效的话,就有可能丢失你做的工作。
在实现的角度来看,这是最简单的,Server端默认实现的就是这样的模式。
另一种方式是,站点采用框架结构,有一个Frame或者隐藏的iframe在不断刷新,这样你永远不会被踢出,但是服务器端为了判断你是否在线,需要定一个发呆时间,如果超过这个发呆时间你除了这个自动刷新的页面外没有刷新其他页面的话,就认为你已经不在线了。
采取这种方式的典型是。
他的优点是可以利用不断的刷新实现一些类似server -push的功能,比如网友之间发送消息。
绵阳科贸网项目在线答疑采用的是第一种模式。
利用Servlet规范中定义的事件监听器(L istener)来解决这个问题,实现更准确的在线人数统计功能。
对每一个正在访问的用户,J2E E应用服务器会为其建立一个对应的HttpSession对象。
当一个浏览器第一次访问网站的时候,J2EE应用服务器会新建一个HttpSession对象,并触发HttpSession创建事件,如果注册了HttpSession事件监听器,则会调用HttpSessionListener事件监听器的SessionCreated方法。
相反,当这个浏览器访问结束超时的时候,J2EE应用服务器会销毁相应的HttpSession对象,触发HttpSession销毁事件,同时调用所注册HttpSessionListener事件监听器的SessionDestr oyed方法。
1)创建一个新的类OnLineDemo来实现ServletContextListener , HttpSessionListener,HttpSe ssionAttributeListener接口,并实现以下方法:public void contextInitialized(ServletContextEvent sce){}public void contextDestroyed(ServletContextEvent sce){System.out.println("contextDestroy");}public void sessionCreated(HttpSessionEvent se){}public void sessionDestroyed(HttpSessionEvent se){}public void attributeAdded(HttpSessionBindingEvent se){}public void attributeRemoved(HttpSessionBindingEvent se){}public void attributeReplaced(HttpSessionBindingEvent se){}另外写一个addUser(UserInfo userInfo)方法;这个方法主要用来判断新登陆的用户是否已经存在,如果不存在就存放到用户集合中。
一、实验目的及要求实验目的:学生在了解Java语言的基础上了解并掌握JSP网站的构架及相关技术,重点掌握核心技术中最基本的JSP、JDBC,初步具有基于J2EE平台的软件开发能力.实验要求:设计并实现简单的聊天室:1)使用JSP使用session控制2)至少3个页面3)使用application保存聊天信息4)能进行用户登录验证5)供多个用户同时聊天6)数据库存用户名、注册、登录二、所用仪器、设备操作系统:windows 7开发环境:Eclipse For J2EE developer数据库:SQL Server 2010服务器:Tomcat 7.0.24三、实验原理1.总体思路:登陆界面运用表单将用户输入的用户名以及密码相关信息传入一个检验页面,检验页面链接数据库如果查找成功则携带用户session重定向到主页面,否则将重新重定向到登陆界面;注册按钮将跳转到一个新的注册新信息页面,该页面可以接受用户的注册信息并且在接收后跳转到新的传输页面,传输页面链接数据库并且通过request对象接收上一页面的信息后将其添加到数据库中主页面主要由一个表单构成,表单的action值为本页面,在页面头嵌入了JAVA程序块,目的是获取上一次提交的用户输入信息,并且将该信息与之前的聊天记录合并成一个string,加入换行符以后重新传回到application对象中去,用于接下来表单中取出application的值并且予以显示。
另外,在聊天界面中还设置了一个刷新按钮,用于刷新显示聊天记录的区域。
2.页面跳转关系四、实验方法与步骤登陆界面:Login.jsp:<%@ page language="java" contentType="text/html; charset=GBK"pageEncoding="GBK"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><script language="javascript">function on_submit(){if(ername.value == ""){alert("用户名不能为空,请重新输入!");return false;}else if(erpassword.value == ""){alert("密码不能为空,请重新输入!");return false;}}function newuser(){location.href="adduser.jsp";return true;}</script><html><head><meta http-equiv="Content-Type" content="text/html; charset=GBK"><title>滨江聊天室</title></head><body background="E://background.jpg" style="background-repeat:no-repeat"> <center><form action="confirm.jsp" name="form1" method="post" onsubmit="returnon_submit()" ><p>请输入用户名:<input type="text" size="10" name="username"/><p>请输入密码: <input type="password" size="10" name="userpassword"/> <p><input type="submit" value="提交" name="submitbutton"/><input type="reset" value="重新输入" name="resetbutton"/><input type="button" value="注册新用户" onclick="newuser()"/></form></center></body></html>登陆验证界面:Confirm.jsp:<%@ page language="java" contentType="text/html; charset=GBK"pageEncoding="GBK"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><%@ page import = "java.sql.*;" %><html><head><meta http-equiv="Content-Type" content="text/html; charset=GBK"><title>Insert title here</title></head><body><%!boolean isvip = false; %><%Connection conn;Statement sql;ResultSet r;String dbURL = "jdbc:sqlserver://localhost:1433;databasename = chat", username = "sa",userpwd = "123456";String n = request.getParameter("username");String p = request.getParameter("userpassword");try{Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");conn = DriverManager.getConnection(dbURL,username,userpwd);sql = conn.createStatement();r = sql.executeQuery("SELECT * FROM vip WHERE name='"+n+"' andpassword='"+p+"'");if(r.next() == false){out.print(request.getParameter("username"));response.sendRedirect("login.jsp");}else{out.print(request.getParameter("username"));session.setAttribute("username",n);response.sendRedirect("mainpanel.jsp");}}catch(Exception ex){ex.printStackTrace();out.println("error!");}%></body></html>注册新用户页面:Adduser.jsp:<%@ page language="java" contentType="text/html; charset=GBK"pageEncoding="GBK"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=GBK"><title>Insert title here</title></head><body background="E://background.jpg" style="background-repeat:no-repeat"> <form action="addvip.jsp"><center>注册新用户:<p>账号:<input type="text" size="10" name="name"/><p>密码:<input type="password" size="10" name="pass"/><p><input type="submit" value="提交" name="submit"/><input type="reset" value="重新输入" name="reset"/></center></form></body></html>注册新用户处理页面:Addvip.jsp:<%@ page language="java" contentType="text/html; charset=GBK"pageEncoding="GBK"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><%@ page import="java.sql.*" %><html><head><meta http-equiv="Content-Type" content="text/html; charset=GBK"><title></title></head><body background="E://background.jpg" style="background-repeat:no-repeat"> <%Connection conn;Statement sql;String dbURL = "jdbc:sqlserver://localhost:1433;databasename = chat", username = "sa",userpwd = "123456";String adname,adpwd;try{Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");conn = DriverManager.getConnection(dbURL,username,userpwd);sql = conn.createStatement();adname=request.getParameter("name");adpwd=request.getParameter("pass");sql.executeUpdate("INSERT INTO vip values('"+adname+"','"+adpwd+"')");}catch(Exception ex){ex.printStackTrace();out.println("error!");}%><script type="text/javascript">alert("注册成功!");</script><center><a href="login.jsp">现在去登录吧!</a></center></body></html>聊天室页面:Mainpanel.jsp:<%@ page language="java" contentType="text/html; charset=GBK"pageEncoding="GBK"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=GBK"><title>Insert title here</title></head><body background="E://background.jpg" style="background-repeat:no-repeat"> <center><%=(String)session.getAttribute("username")%><%if(application.getAttribute("text")!=null&&request.getParameter("say")!= null){String temp =(String)session.getAttribute("username")+":"+request.getParameter("say");application.setAttribute("text",application.getAttribute("text")+ "\n" +temp );}else if(request.getParameter("say")!=null){String temp =(String)session.getAttribute("username")+":"+request.getParameter("say");application.setAttribute("text",temp);}%><form name="form" method="post" action="" ><textarea rows="10" cols="80"name="textfield" ><%=application.getAttribute("text") %></textarea> <p><input type="text" size="10" name="say" /><input type="submit" value="发送" /></form><form action=""><input type="submit" value="刷新页面"/></form></center></body></html>LOGO页面:Logo.jsp:<%@ page language="java" contentType="text/html; charset=GBK"pageEncoding="GBK"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=GBK"><title>Insert title here</title></head><body><br><br><br><font size="5">信息工程-潘兆琪制作</font> </body></html>五、实验结果与数据处理登陆界面:登陆验证:注册页面:数据库:主体页面:六、结论通过这次的JAVA EE程序设计,对此门课程有了更加深入的认识,巩固了所学的知识,可以通过简单的代码实现有关链接数据库,创建窗口等等目的。
jsp实现简单聊天室项目项目结构及功能:由4个jsp文件及相关图版文件组成.实现功能:发送消息、显示消息、发送表情及显示、更改字体大小及颜色、过滤发送内容特殊字符[JSP文件其实就是由html及java代码组成] main.jsp:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath =request.getScheme()+"://"+request.getServerName()+":"+r equest.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>'main.jsp'</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control"content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords"content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css"href="styles.css">--></head><frameset rows="70%,30%"><frameset cols="80%,20%"><frame src="left.jsp" name="left" /><frame src="right.jsp" name="right" /></frameset><frameset><frame src="bottom.jsp" name="bottom" /></frameset></frameset></html>left.jsp:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath =request.getScheme()+"://"+request.getServerName()+":"+r equest.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>left.jsp</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control"content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords"content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is mypage"><!--添加一条每隔3秒自动刷新的功能。
随着因特网的越来越普遍提高,人们的互动不单单停留在手机与电话等普通的通讯工具上。
更多的是通过互联网相互交流。
网上聊天可以交朋友、增长知识面、陶冶情操、放松心情等等。
正如一生中最了解你的人也许并不是你身边的朋友,而是一个你并不认识的陌生人。
每个人天生都渴望和了解自己的人相互表达,只不过是没有遇到最了解自己的那个人,而聊天室提供了这样一个最好的场所。
网上聊天室给人们的学习和生活带来极大的方便。
关键词:JSP;JavaScript;数据库;聊天室;第一章绪论 (1)1.1系统研究的背景和目的 (1)1.2系统的理论依据、实验基础和研究方法 (1)第二章聊天室系统的分析与设计 (3)2.1聊天室系统的需求分析 (3)2.2聊天室的分析与设计 (4)第三章数据库的设计 (8)3.1创建数据库 (8)3.2数据库表 (8)3.3实体E-R图 (9)3.4连接数据库 (10)第四章聊天室系统的编程与实现 (12)4.1系统需要解决的主要问题 (12)4.2系统的实现 (12)第五章系统测试 (17)5.1测试目的 (17)5.2测试方法 (17)5.3测试结果 (17)总结 (18)致谢 (19)参考文献 (20)第一章绪论1.1系统研究的背景和目的1.1.1系统研究的背景从世界上第一台计算机诞生于今已有半个多世纪,不过正因为它的方便、快速、适用,已被应用到各个领域。
跟着网络的呈现,信息资源的及时共享成为实际,更重要的是它供给了一种及其直接的交流方法,固然这类交流不单是指数据、消息之间的传播,更是聊天软件和在线聊天室所承载这种交流的语言。
随着网络的发展,人们经过网络能够更方便快捷地进行消息交换和学习。
聊天系统为大家提供了一个良好的互动平台。
在这个平台上,人们不妨经过文本和标签及时交谈和聊天。
在聊天室里,人们可以自由的选择聊天对象,和他们喜欢的人进行交流。
是网民之间相互交流、交换情感的最佳方法之一。
1.1.2系统研究的目的基于浏览器的表现聊天室是通讯的交通工具,它能够方便地让偏远地区的用户同时在线闲聊。
导航:login.html--登录,js简单验证chat.jsp--框架页,上为show,下inputinput.jsp--输入show.jsp--显示初学jsp自己练手用的,拿出来分享大家共同学习,共同进步Part 1:login.html<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>login.html</title><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="this is my page"><meta http-equiv="content-type" content="text/html; charset=UTF-8"><!--<link rel="stylesheet" type="text/css" href="./styles.css">--></head><body><form name="form1" method="post" action="chat.jsp"><table align="center"><tr><td>userid:</td><td><input type="text" name="uid" size="20"/></td></tr><tr><td>password:</td><td><input type="password" name="pwd" size="20"/></td></tr><tr><td colspan="2"><input type="submit" value="登陆" onClick="return ck()"/> </td></tr></table></form><script type="text/javascript">alert("hello");function ck(){if((document.form1.uid.value=='admin')&&(document.form1.word.value)=='admin'){return true;}else{alert("您输入的密码错误!"); return false;}}</script></body></html>Part 2:Chat.jsp<%String uid=new String();//uid="${param.uid}";uid=request.getParameter("uid");//session.putValue("uid",uid);//out.println(session.getValue("uid"));//out.println(uid);//out.println("<br> ${param.uid} <br>");//application.setAttribute("show","");%><frameset rows=80%,20%><frame name="show" src="show.jsp"><frame name="input" src="input.jsp"></frameset>Part 3:Input.jsp<form name="iform" action="show.jsp" target="show"><table align="center"><tr><td><%=session.getValue("uid") %></td><td><input type="textarea" name="chat"></input></td></tr><tr><td colspan="2" align="center"><input type="submit" value="speak" onClick="return ch()"/> </td></tr></table></form><script type="text/javascript">function ch(){if(document.iform.chat.value==""){alert("please input your words");return false;}elsereturn true;}</script>Part 4:Show.jsp<html><body><font align="middle" size="24" color="red"><%=session.getValue("uid") %>>welcome to our chat room!</font><%int i,k;//application.setAttribute("i",null);String in=(String)application.getAttribute("i");String show="";if(in!=null){i=Integer.parseInt(in)+1;}else{i=0;}application.setAttribute("i",""+i);String uid=(String)session.getValue("uid");if(i<=5)for(k=0;k<i;k++){show=show+(String)application.getAttribute("show"+k);}else{for(k=0;k<i-1;k++){//application.removeAttribute("show"+k);application.setAttribute("show"+k,application.getAttribute("show"+(k+1)));show=show+(String)application.getAttribute("show"+k);}i--;application.setAttribute("i",""+i) ;}show+= "<br>"+uid+">:"+request.getParameter("chat");application.setAttribute("show"+i,"<br>"+uid+">:"+request.getParameter("chat")) ; out.println(show);%><body><html>。
毕业设计(论文)题目基于JSP即时聊天系统的设计与实现学生姓名吴覃秀学号2003112115专业计算机科学与技术班级20031121指导教师杨旺民评阅教师完成日期2007 年 5 月26日学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
本人完全意识到本声明的法律后果由本人承担。
(宋体小4号)作者签名: 2007年 5 月 26日学位论文版权使用授权书本学位论文作者完全了解学校有关保障、使用学位论文的规定,同意学校保留并向有关学位论文管理部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权省级优秀学士学位论文评选机构将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
本学位论文属于1、保密□,在_________年解密后适用本授权书。
2、不保密□。
(请在以上相应方框内打“√”)作者签名: 2007年 5 月 26 日导师签名: 2007年 5 月 26 日目录摘要 (1)Abstract (1)前言 (2)1 聊天系统需求分析及技术支持 (3)1.1 项目开发背景 (3)1.1.1 课题来源 (3)1.1.2 研究目的和意义 (3)1.2 聊天系统概述 (3)1.2.1 聊天系统功能需求概述 (3)1.2.2 聊天系统现状研究 (4)1.2.3 聊天系统设计路线和研究方案 (4)1.2.4 聊天系统发展方向 (5)1.3 聊天系统开发技术介绍 (5)1.3.1 JSP技术介绍 (5)1.3.2 JavaBean技术简介 (8)1.3.3 JDBC及数据库管理的连接 (8)1.3.4 B/S模式与C/S模式 (10)2 聊天系统总体设计 (11)2.1 开发和设计的总体构思与规划 (11)2.1.1 聊天系统的基本原理 (11)2.1.2 拟定聊天系统应达到的技术指标 (11)2.2 聊天系统模块总体设计 (12)2.2.1 模块划分及用户角色 (12)2.2.2 模块任务概述 (13)2.3 聊天系统程序设计流程 (13)2.3.1 整体设计过程 (13)2.3.2 总体设计框架图 (14)2.4 聊天系统数据结构设计 (16)2.4.1 chatuser表的设计 (16)2.4.2 roominfo表的设计 (16)2.4.3 chatmusic、chatsport、chatcomputer、chatchat表的设计 (16)3 聊天系统详细设计 (17)3.1 聊天系统详细功能描述 (17)3.2 聊天系统程序设计流程图 (17)3.2.1 系统功能详细设计 (17)3.2.2 用户登录程序设计流程图 (17)3.2.3 管理员登录程序设计流程图 (17)3.3 模块详细设计 (20)3.3.1 普通用户登录模块详细设计 (20)3.3.2 管理员登录模块详细设计 (21)3.3.3 聊天模块详细设计 (21)3.3.4 管理模块详细设计 (22)3.3.5 退出模块详细设计 (23)3.4 聊天系统数据库详细设计 (24)3.4.1 数据库文件的设计 (24)3.4.2 建立ODBC数据源 (25)3.4.3 JDBC-ODBC连接 (28)3.5 聊天系统运行环境的安装与配置 (29)3.5.1 JDK的安装和配置 (29)3.5.2 Tomcat的安装和配置 (33)4 聊天系统具体实现及效果 (35)4.1 系统首页实现及效果 (35)4.2 注册模块实现及效果 (36)4.3 普通用户登录模块实现及效果 (38)4.4 聊天模块具体实现及效果 (40)4.4.1 聊天主截面 (40)4.4.2 聊天信息显示窗口 (41)4.4.3 发言控制面板 (42)4.4.4在线用户列表及辅助功能链接窗口 (43)4.5 用户的退出处理 (44)4.6 管理模块实现 (44)4.7 聊天系统的发布和部署 (45)5 项目设计总结 (46)5.1系统概述 (46)5.2 关键问题的分析和解决 (46)5.2.1 中文乱码问题 (46)5.2.2 私聊功能的实现问题 (46)5.2.3 尚存在的问题 (47)5.3 系统展望 (47)5.4 自身收获 (47)致谢 (48)参考文献 (49)49 1基于JSP即时聊天系统的设计与实现学生:吴覃秀指导教师:杨旺民(三峡大学电气信息学院)摘要:随着Internet速度的提高和使用的普及,网络上各式各样的应用层出不穷,网上聊天就是这样一个众口皆碑的应用。
基于JSP的安全在线聊天室系统设计摘要随着Internet技术的飞速发展,网络已经成为人们生活中不可缺少的一部分,通过聊天室在线聊天已成为网络上人与人之间沟通、交流和联系的一种方式。
为此,越来越多的网站开始提供在线聊天的功能。
与此同时,聊天室也以其方便、快捷、低成本等优势受到众多企业的青睐,很多企业的网站中也加入了聊天室模块,以达到增进企业与消费者之间、消费者与消费者之间相互交流的目的。
本文是软件工程在线聊天室系统的开发说明,重点运用软件工程知识对系统进行分析、设计实现和测试的思想的具体描述,其中包括软件生命周期的三个主要方面:软件定义(问题定义、可行性研究、需求分析)、软件开发(总体设计、详细设计、编码、测试)和运行维护。
通过实际的运用软件工程知识处理问题,加强程序的规范性、清晰性、可靠性,并且使得程序易于维护。
本软件使用JAVA 进行编写,具有良好的兼容性且易于实现。
聊天室操作简洁容易上手、结构简单、查找方便、实用性强。
【关键词】:在线聊天室,软件工程,Java,MySQL目录摘要 (1)1. 概述 (1)1.1 软件工程的概述 (1)1.2 在线聊天系统概述 (2)2. 在线聊天室系统的分析 (2)2.1 问题定义 (2)2.2 可行性研究 (2)2.2.1 技术可行性 (2)2.2.2 经济可行性 (2)2.2.3 操作可行性 (2)2.3 需求分析 (3)2.3.1 确定对系统的综合要求 (3)2.3.2 分析建模 (3)2.2.3 系统逻辑模型 (4)3. 在线聊天室系统的设计 (6)3.1 模块设计 (6)4.在线聊天室系统的编码和测试 (7)4.1 系统编码 (7)4.1.1 聊天室的界面 (7)4.1.2 页面处理 (8)4.2 系统测试 (10)4.2.1 黑盒测试的内容 (10)4.2.2 使用黑盒测试的情况分析 (11)5.总结 (11)参考文献 (12)1. 概述1.1 软件工程的概述软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。
它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。
在现代社会中,软件应用于多个方面。
典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。
同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。
这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。
软件工程的目标是:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并且满足用户需求的软件产品。
追求这些目标有助于提高软件产品的质量和开发效率,减少维护的困难。
生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。
软件工程过程主要包括开发过程、运作过程、维护过程。
它们覆盖了需求、设计、实现、确认以及维护等活动。
需求活动包括问题分析和需求分析。
问题分析获取需求定义,又称软件需求规约。
需求分析生成功能规约。
设计活动一般包括概要设计和详细设计。
概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。
详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。
实现活动把设计结果转换为可执行的程序代码。
确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。
维护活动包括使用过程中的扩充、修改与完善。
1.2 在线聊天室概述聊天室实现的主要功能是:接收各个客户端的聊天信息,然后按照其聊天对象将该信息发送到目标浏览器上。
在一个浏览器的窗口中,既能输入上网者的发言,又能看到自己与他人的聊天记录。
同时,为了便于上网者选择谈话对象,窗口中需要提供目前在线者的名单。
2. 在线聊天室的分析2.1 问题定义就是提供一个网友能够通过浏览器实现在线聊天的场所2.2 可行性研究2.2.1 技术可行性Jsp+JavaBean+MySQL 实现,绝对可行,没的说。
2.2.2 经济可行性几乎无成本,几天搞定。
2.2.3 操作可行性用户注册登录,选择聊天室,然后聊天。
哪个管理员邪恶点,还会踢人。
操作可行性研究完毕。
2.3 需求分析2.3.1 确定对系统的综合要求1.功能需求:用户打开浏览器,注册登录,登录成功后选择自己喜欢的房间,点进去聊一下,发现可聊天,这东西可以用;有些玩家大家不喜欢,乱刷屏,就会要求管理员把他踢掉,管理员犀利踢之; 有些用户之间的聊天不喜欢被人看到,就有了悄悄话的选项; 有些用户喜欢添油加醋,聊天内容字体颜色,动作表情都可以添加。
2.性能需求:为了保证系统能够长期、安全、稳定、可靠、高效的运行,系统应该满足以下的性能需求:如果聊天室长期开发,必须考虑数据库的负载,管理员有清理数据库的权限;本聊天室使用数据库,信息与数据库的连接是很频繁的,我们使用JavaBean ,能轻松实现数据库与外部信息的交换;。
2.3.2 分析建模功能模型数据流图如图2-2所示:图2-2 数据流JSPJavaBeanMySQL调用返回结果操作数据库返回记录2.2.3 系统逻辑模型用户信息实体E-R图聊天信息实体E-R图用户信息Id号用户名密码最近登录时间是否为管理员聊天信息所在房间发表人用户名发表对象用户名发表时间动作和表情聊天内容是否悄悄话Id在线用户信息实体E-R 图数据库设计:create table userinfo #用户信息表 (id int primary key auto_increment, username varchar(50), pass varchar(50),lastlogintime datetime,role int #1-管理员 0-普通会员 );create table msginfo #聊天记录表 (id int primary key auto_increment, chatroom varchar(50), msgfrom varchar(50), msgto varchar(50), chattime datetime, chataction varchar(50), msgcontent varchar(200),secret tinyint(1) #1 悄悄话 0 非悄悄话 0默认 ); 在线用户信息Id 号所在房间用户名最近聊天时间create table useronline #在线用户表(id int primary key auto_increment,chatroom varchar(50),username varchar(50),lastchattime datetime,);3. 在线聊天室设计3.1 模块设计分为4个模块:1.数据库通用管理模块:完成数据库的连接,查询,更新功能封装在JavaBean中(DBConn.java) JSP页面或者其他JavaBean可以通过调用DBConn对象的方法连接操作数据库。
2.用户登录注册模块:聊天室注册简化,将注册和登录融合一起,第一次登录,如果用户信息表中没有该用户名,即时添加。
下次登录可以继续用此用户,登录后用户就会带着自己的登录信息(session),遨游聊天室模块。
3.聊天室模块先有个房间列表供用户选择,用户选择自己喜欢的房间进入聊天室。
聊天室有个框架里面分为3个部分:输入消息显示消息在线用户列表4.管理员功能模块判断是否为管理员有个友好的界面通过点击页面,实现对数据库的删除修改查询4.在线聊天室系统的编码和测试4.1 系统编码4.1.1 聊天室系统的界面截图。
注册登录模块login.jsplogincheck.jsp聊天室模块管理员模块4.1.2 页面处理这里一笔带过,具体代码见源文件数据库通用管理模块DBConn.java注册登录模块login.jsp 登录界面弄个表单提交再加上JS的空值验证logincheck.jsp 登录检测处理UserinfoMgr.java 封装了登录检测用户信息和添加用户信息方法的JavaBean方法有check() saveToDB()聊天室模块sessioncheck.jsp 检测session信息判断用户是否登录chatframe.jsp 框架包含显示在线列表输入三个框架JavaBean有Msg.java 聊天消息封装体UserOnline 在线用户封装体ChatRoomMgr.java 聊天室管理子模块:聊天室列表选择模块roomlist.jsp 聊天室选择页面roomlistdeal.jsp 聊天室选择并处理页面信息显示模块showmsg.jsp 聊天信息显示页面getmsg.jsp 聊天信息加载页面实现无刷新showmsg的任务:1.加载真正得到消息,并实时刷新的页面,实现不闪烁效果。
2.确定加载内容的位置getmsg的任务: 1.刷新,JS实现无声音 2.各种操作得到结果 3.在具体位置显示结果在线列表模块onlinelist.jsp 在线用户列表页面信息输入模块input.jsp 信息输入页面sendmsg.jsp 信息输入处理logout.jsp 离开房间处理changeroom.jsp 重新选择房间处理管理员模块maneger.jsp管理员高级页面kick.jsp 踢人功能管理员踢人实现manager.jsp先判断是不是管理员,如果不是,提示并退出窗口本页面直接对数据库操作,显示所有在线玩家列表,和最近发言时间checkbox复选框传递用户名串nameskick.jsp接下来是爽快的踢人操作调用ChatRoomMgr 的logout()方法,依次传递names[i]就实现批量踢人踢完之后提示,并刷新manager.jsp4.2 系统测试信息技术深深融入业务生活,使得软件产品质量的要求变得很高。
这也使我们为提高软件测试的效率来寻求各式各样的方法。
而软件测试的方法和技术是多种多样的。
对于软件测试技术,可以从不同的角度加以分类:按测试阶段可分为:单元测试、集成测试、确认测试。
测试任何产品都有两种方法:如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用;如果知道产品的内部过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。
前一种方法称为黑盒测试,后一种方法成为白盒测试。
4.2.1 黑盒测试的内容功能测试也称为黑盒测试,用于验证系统的各项功能是否能正常完成。
由于实际情况的多样性,需要由多人重复测试,在不同情况下执行各项功能操作,其输出就是该功能的执行结果。
黑盒测试着重测试软件功能。
黑盒测试并不能取代白盒测试,它是与白盒测试互补的测试方法,它很可能发现白盒测试不易发现的其他类型错误。