• 在线用户统计二


     通过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

  • 相关阅读:
    Java面试题及答案整理(持续更新)
    CentOS6.4-mini系统服务列表
    Linux内核编译,模块尺寸变大的解决办法
    Configuration Opennebula3.8 & 4.x Virtual Machines Contextualizing
    CentOS6.3上Opennebula 3.8 VLAN配置
    Ubuntu 12.04 LTS主机名、IP、DNS配置总结
    Linux su
    Git安装配置总结
    Linux CentOS添加163yum源
    Linux 内核编译 modules ehci-hcd, ohci-hcd, uhci-hcd not found
  • 原文地址:https://www.cnblogs.com/joycelishanhe/p/3953870.html
Copyright © 2020-2023  润新知