网络聊天室

阅读更多

网络聊天室

  设计聊天室,在聊天室中,需要通过JSP内置对象来实时保存特定数量的当前聊天信息。

聊天室的设计包括:用户进行登录,选择聊天室,进行聊天,退出聊天室。 在聊天室中,用户只需输入一个用户名就可以进入聊天室。

具体要求:

1.用户登录成功后,程序会要求用户选择聊天室。私聊和公聊。

2.进入聊天室后,用户可以从用户信息窗口看到该聊天室中所有用户的用户名,也可以在聊天窗口中看到随时更新的聊天信息。用户可以给所有人或某一个聊天用户发送公共的聊天信息,这个聊天内容大家都可以看到。用户也可以给某个用户发送私人的聊天信息,这种信息属于私聊信息,只有发送者和接收者可以看到。

3.在用户单击“退出”按钮后,页面关闭。

 

三、实验方法

1、用户登录信息使用request对象getParameter()方法得到用户登陆的一些信息;

2、公聊信息,私聊信息可以使用JSP内置对象。

 

3、聊天的信息要不断刷新页面,使用户实时看到聊天信息。

4、用户退出时:用户点击“退出”按钮。

 

部分重要代码展示:

login.jsp登录

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>




用户登录




<%
		request.setCharacterEncoding("utf-8");
	%>

	
用户登录
用户名:
密 码 :
本聊天系统无须注册,可直接登录。

 userList.jsp用户列表

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>





<%@ page import="java.util.*"%>
<%@include file="chkSession.jsp"%>







<%
		request.setCharacterEncoding("utf-8");
	%>
			
		<%
			if (session.getAttribute("username") != null) {
				HashSet set = (HashSet) session.getAttribute("username");
				Iterator iter = set.iterator();
				while (iter.hasNext()) {
					String obj = iter.next();
		%>
		
		<%
			}
			}
		%>
	
欢迎来到网络聊天室!
在线人员
所有人
")><%=obj%>

 chklogin.jsp数据的处理

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>




聊天用户登录


<%
		request.setCharacterEncoding("utf-8");
	%>
	<%!HashSet set = new HashSet();%>
	<%
		//获取用户昵称
		String username = request.getParameter("username");
		//登录成功将昵称保存到session中   
		session.setAttribute("name", username);
		set.add(username);
		//登录成功将昵称保存到set中     
		session.setAttribute("username", set);
		//获取用户密码
		String pwd = request.getParameter("pwd");

		Date d = new Date();
		session.setAttribute("loginDate", d);

		//在session中添加一个登录成功的标记
		session.setAttribute("login", "success");
		//转到聊天室选择页面
		response.sendRedirect("chatRoom.jsp");
	%>

 sendMsg.jsp发信息

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@page import="java.util.*" %>
<%@page import="yt.Message" %>

  
    发送信息    
    
    
  
  
  <%
	request.setCharacterEncoding("utf-8");
%>
   <%String from=request.getParameter("from");
  // System.out.println(from);
   //接收用户输入的聊天信息以及用户选择的信息显示颜色,是否悄悄话,聊天对象
   String msgContent=request.getParameter("msg");// 发送信息
  // System.out.println(msgContent);
   String msgTo =request.getParameter("msgTo");//选择聊天对象,只读属性,如果不选择聊天对象表示对所有人
   String secret = request.getParameter("secret");//选择是否悄悄话
   Date d1=new Date();
  
   Message message=new Message();
   message.setMsgFrom(from);
   message.setMsgTo(msgTo);
   message.setSecret(secret);
   message.setMsgContent(msgContent);
   message.setDate(d1);
   sendMessage(message);
   %>
   <%!
     ArrayList v=new ArrayList();
     ServletContext  application;   
       synchronized void sendMessage(Message message)
          {
    	   application=getServletContext();
            v.add(message);
            application.setAttribute("Mess",v); 
          }
     %> 

  <% response.sendRedirect("show.jsp");%>  
  


 show.jsp显示信息

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<%@ page import= "java.text.SimpleDateFormat"%>
<%@page import="yt.Message"%>








欢迎来到私聊聊天室
<% ArrayList show1 = new ArrayList(); //ArrayList v = (ArrayList) application.getAttribute("Mess"); if (v != null) { for (int i = 0; i < v.size(); i++) { Message message = (Message) v.get(i); if(message.getDate().compareTo(loginDate)>=1){ if(message.getSecret().equals("true")){ show1.add(message); // System.out.print("siliao"+message.getMsgFrom()+message.getMsgTo()); } } } } application.setAttribute("Show", show1); ArrayList list1 = (ArrayList) application.getAttribute("Show"); if (list1 != null) { for (int i = 0; i < list1.size(); i++) { Message message = (Message) list1.get(i); SimpleDateFormat f=new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss"); String time=f.format(message.getDate()); if(message.getMsgFrom().equals(to)||message.getMsgTo().equals(to)){ out.print(time + ":" + " " + message.getMsgFrom() + "对" + message.getMsgTo() + "说:" + message.getMsgContent() + "
"); } } } %>

 leave.jsp离开

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>




logout.jsp


	<%
		request.setCharacterEncoding("utf-8");
	%>
	<%
		HashSet set = (HashSet) session.getAttribute("username");
		System.out.print(set);
		String name = (String) session.getAttribute("name");
		//System.out.print(name);
		if (name != null) {
			set.remove(name);
			session.setAttribute("username", set);
		}
		//设置session失效
		session.invalidate();
		//跳转到聊天室登录界面
		response.sendRedirect("login.jsp");
	%>



 最终结果显示:


网络聊天室_第1张图片


网络聊天室_第2张图片
 
 
网络聊天室_第3张图片
 


网络聊天室_第4张图片
 用几个不同的浏览器打开聊天室,实现多人聊天,后来进入的人不能看到之前的信息,私聊只会出现在私聊双方的页面上,其他人看不到。

具体实现的代码上传至附件Jspwork401.zip

 

  • 网络聊天室_第5张图片
  • 大小: 24.3 KB
  • 网络聊天室_第6张图片
  • 大小: 51.9 KB
  • 网络聊天室_第7张图片
  • 大小: 44.9 KB
  • 网络聊天室_第8张图片
  • 大小: 43.4 KB
  • Jspwork401.zip (17.9 KB)
  • 下载次数: 8
  • 查看图片附件

你可能感兴趣的:(jsp,框架,内置对象)