zoukankan      html  css  js  c++  java
  • 在线用户统计二

     通过SessionListenr可以监听session的创建和销毁,所以首先要写一个类MySessionListener,实现javax.servlet.http.HttpSessionListener接口及其sessionCreated()sessionDestroyed()方法:

    import java.util.HashSet;
    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpSession;
    import javax.servlet.http.HttpSessionEvent;
    import javax.servlet.http.HttpSessionListener;
     
    public class MySessionListener implements HttpSessionListener {
     
           public void sessionCreated(HttpSessionEvent event) {
                  HttpSession session = event.getSession();
                  ServletContext application = session.getServletContext();
                  
                  // 在application范围由一个HashSet集保存所有的session
                  HashSet sessions = (HashSet) application.getAttribute("sessions");
                  if (sessions == null) {
                         sessions = new HashSet();
                         application.setAttribute("sessions", sessions);
                  }
                  
                  // 新创建的session均添加到HashSet集中
                  sessions.add(session);
                  // 可以在别处从application范围中取出sessions集合
         // 然后使用sessions.size()获取当前活动的session数,即为“在线人数”
           }
     
           public void sessionDestroyed(HttpSessionEvent event) {
                  HttpSession session = event.getSession();
                  ServletContext application = session.getServletContext();
                  HashSet sessions = (HashSet) application.getAttribute("sessions");
                  
                  // 销毁的session均从HashSet集中移除
                  sessions.remove(session);
           }
    }
    

      然后再在web.xml中分别配置SessionListener和session超时时间(10分钟):

    <listener>
        <listener-class>全路径MySessionListener</listener-class>
    </listener>
    

      

    <session-config>
        <session-timeout>10</session-timeout>
    </session-config>
    

      最后在Jsp页面代码使用以下代码就可以实现当前在线人数统计输出:

    .......
    当前在线:
    <% 
    HashSet sessions=(HashSet)application.getAttribute("sessions");
    out.print(sessions.size());
    %>
    .......
    

      

    转载自---------------http://blog.sina.com.cn/s/blog_64e467d60100v4mi.html

  • 相关阅读:
    “5W1H”带你来学习JavaScript
    [windows+cocos2dx]文本类
    server后台TCP连接存活问题
    (七):处理MFC
    Servlet中的request对象、重定向和转发的差别(6)
    ORACLE 存储函数
    【@伏草惟存@】7年系列博文精选
    笔记14:Docker 部署Python项目
    笔记13:Python 和 Elasticsearch 构建简易搜索
    笔试12:Bootstrap知识
  • 原文地址:https://www.cnblogs.com/joycelishanhe/p/3953870.html
Copyright © 2011-2022 走看看