聊天室

转载请注明出处:http://blog.csdn.net/lindonglian/article/details/40158985

此聊天室用Servlet和jsp实现,功能包含统计在线人数,查看在线用户,上传文件,显示用户聊天记录。还有待改动的地方,适合入门。

project文件包含login.jsp,main.jsp,display.jsp,sponse.jsp,shangchuan.jsp,sc.jsp,userlist.jsp

统计在线人数用到servlet监听器userlistener.java

package listener;

import java.util.ArrayList;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class userlistener implements ServletContextListener,HttpSessionAttributeListener,HttpSessionListener{

	ServletContext app=null;
	@Override
	public void sessionCreated(HttpSessionEvent se) {
		// TODO Auto-generated method stub
		Integer num=(Integer)app.getAttribute("onlinecount");
		app.setAttribute("onlinecount", num+1);
		String user=(String) se.getSession().getAttribute("username");
		ArrayList<String> ar=(ArrayList<String>)app.getAttribute("name");
		ar.add(user);
		app.setAttribute("name", ar);
	}

	@Override
	public void sessionDestroyed(HttpSessionEvent se) {
		// TODO Auto-generated method stub
		Integer num=(Integer)app.getAttribute("onlinecount");
		app.setAttribute("onlinecount", num-1);
		ArrayList<String> ar=(ArrayList<String>)app.getAttribute("name");
		String user=(String) se.getSession().getAttribute("username");
		ar.remove(user);
		app.setAttribute("name", ar);
	}

	@Override
	public void attributeAdded(HttpSessionBindingEvent se) {
		// TODO Auto-generated method stub
		ArrayList<String> array=(ArrayList<String>)app.getAttribute("name");
		String user=(String)se.getValue();
		array.add(user);
	}

	@Override
	public void attributeRemoved(HttpSessionBindingEvent se) {
		// TODO Auto-generated method stub
		ArrayList<String> array=(ArrayList<String>)app.getAttribute("name");
		String user=(String)se.getValue();
		array.remove(user);
	}

	@Override
	public void attributeReplaced(HttpSessionBindingEvent event) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void contextDestroyed(ServletContextEvent arg0) {
		// TODO Auto-generated method stub
		app.removeAttribute("name");
		app.setAttribute("onlinecount", 0);
	}

	@Override
	public void contextInitialized(ServletContextEvent sce) {
		// TODO Auto-generated method stub
		ArrayList<String> array=new ArrayList<String>();
		app=sce.getServletContext();
		app.setAttribute("name",array);
		app.setAttribute("onlinecount", 0);
	}
}


登录界面


login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="listener.userlistener" %>
<html>
  <head>
    <title>My JSP 'login.jsp' starting page</title>
  </head>
  
  <body bgcolor="green">  
  <%
     request.setCharacterEncoding("gb2312");
     response.setContentType("text/html;charset=gb2312");
   %>
  
  <center>
    <h5>欢迎来到聊天室</h5>
    <h1>艳子茶訪</h1>
    <form action="main.jsp" method="post"> 
    <table>
        <tr>
            <td>用户名</td>
            <td><input type="text" name="username"></td>
        </tr>
        <tr>
            <td>密码</td>
            <td><input type="password" name="mima"></td>
        </tr>
    </table>
        <tr>
            <td><input type="submit" value="登录"></td>
            <td><input type="reset" value="取消"></td>
        </tr>   
  </form> 
  </center>
  </body>
</html>
聊天室界面

此页面由两个框架组成

main.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
     request.setCharacterEncoding("gb2312");
     response.setContentType("text/html;charset=gb2312");
%>
<html>
  <head>
    <title>聊天主页面</title>
  </head>
    <%
    application.setAttribute("message", "");
    String na=request.getParameter("username");
    session.setAttribute("username", na);
   %>
  <frameset rows="*,100" frameborder="no">
   <frame src=display.jsp name=display frameborder="no" scrolling="auto">
   <frame src=sponse.jsp name=sponse frameborder="no">
  </frameset>
  <noframes></noframes>
</html>

上半部分的display.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="listener.userlistener" %>
<%
       response.setHeader("refresh","5");
%>
<html>
  <head>
    <title>My JSP 'display.jsp' starting page</title>
  </head>  
  <body bgcolor=green>
  <%
     request.setCharacterEncoding("gb2312");
     response.setContentType("text/html;charset=gb2312");
   %>
  <form action="" method="post">
     <p align="center"><font size=5>聊天记录</font></p>
     <p align="right"><font size=2>眼下在线人数:<%=application.getAttribute("onlinecount") %></font></p>
     <hr>
     <%    
        String str=application.getAttribute("message").toString();
        if(!str.equals("")&&str!=null){
          out.print(str);
        } 
     %>
  </form>
  </body>
</html>
下半部分的sponse.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
  <head> 
    <title>My JSP 'sponse.jsp' starting page</title>
    <script language="javaScript">
       function qinkong(){
         application.removeAttribute("message");
       }
    </script>
  </head>
  <body bgcolor=green>
   <%
     request.setCharacterEncoding("gb2312");
     response.setContentType("text/html;charset=gb2312");
   %>
  <form action="" method="post">
    <p align="center">
                 我要发言:
       <input type="text" name="message" size="70">
       <input type="submit" value="发送">
       <input type="reset" value="清除">
    </p>
    <p align="center">
       <a href="shangchuan.jsp">上传文件</a>
       <a href="userlist.jsp">查看在线用户</a>
       <input type="submit" value="清空聊天记录" onclick="qinkong()">
    </p>  
  </form>
  <%
    String user=(String)session.getAttribute("username");
    String father=(String)application.getAttribute("message");
    String son=request.getParameter("message");
    application.setAttribute("check", son);
    if(son!=null&&!son.equals("")&&user!=null&&father!=null){
       application.setAttribute("message",father+user+"说: "+son+"<br>");
    } 
  %>  
  </body>
</html>
上传文件页面

实现上传功能须要用到jspSmartUpload.jar包

免积分jspSmartUpload下载:http://download.csdn.net/detail/u011731233/8048011


shangchuan.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
  <head> 
    <title>文件上传</title>
  </head>  
  <body bgcolor=green>
     <p align="center">请选择你要上传的文件</p>
     <form action="sc.jsp" method="post" enctype="multipart/form-data">
        <input type="hidden" name="TEST" value="good">
        <table border="0" align="center">
          <tr>
             <td><div align="center">
                 <input type="FILE" name="FILE1" size="30">
             </div></td>
          </tr>
          <tr>
             <td><div align="center">
                 <input type="submit" name="Submit" value="開始上传">
                 
                 <a href="display.jsp">返回</a>
             </div></td>
          </tr>
        </table>
     </form>
  </body>
</html>
上传一个shang.txt文件到project文件夹mulu成功后的处理页面


sc.jsp

<%@ page language="java" import="java.sql.*" 
   contentType="text/html;charset=gb2312" errorPage=""%>
<%@ page import="com.jspsmart.upload.*" %>
<jsp:useBean id="SU" scope="page" class="com.jspsmart.upload.SmartUpload"/>
<html>
  <head>
    <title>上传文件</title>
    <meta http-equiv="Content-Type" content="text/html;charset=2312">
  </head>
  <body bgcolor=green>
    <%
       try{
         SU.initialize(pageContext);
         SU.service(request, response);
         SU.upload();
         String fn=SU.getFiles().getFile(0).getFileName();
         SU.save("mulu/");
         out.println("<br>上传成功查看<a href=mulu/"+fn+">mulu/"+fn+"文件</a>");
       }   
       catch(Exception ex)
       {
         ex.printStackTrace();
       }
    %>
    <br>
    <a href="sponse.jsp">返回</a>
  </body>
</html>
查看用户列表


uselist.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
  <head> 
    <title>My JSP 'userlist.jsp' starting page</title>
  </head>
  
  <body bgcolor=green>
  <center>
    <h3>用户列表</h3>
    <%
       ArrayList<String> array=(ArrayList<String>)application.getAttribute("name");
       Iterator<String> it=array.iterator();
       while(it.hasNext()){
         String str=it.next();
         out.print("**"+it.next()+"**"+" ");
       }
    %>
    <br>
    <a href="sponse.jsp">返回</a>
  </center>
  </body>
</html>

posted @ 2015-02-02 09:08  phlsheji  阅读(371)  评论(0编辑  收藏  举报