zoukankan      html  css  js  c++  java
  • 聊天室

    转载请注明出处: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>
    

  • 相关阅读:
    dfadfas
    Sqlserver修改文件目录,包括系统数据库
    VS2013 产品密钥所有版本
    win11 取消右键更多选项
    VS2013 产品密钥所有版本
    CronTrigger表达式
    C#语言Windows服务程序测试网站发送HTTP请求超时解决办法
    未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\705b2e0e\c6ba7a68\App_global.asax.v9
    SQL跨数据库复制表数据<转载>
    “服务器应用程序不可用”解决方法
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4266786.html
Copyright © 2011-2022 走看看