• 在线用户统计二


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

  • 相关阅读:
    复习一些奇怪的题目
    NOIP 考前 KMP练习
    NOIP 考前 并查集复习
    NOIP 考前 Tarjan复习
    NOIP 考前 图论练习
    BZOJ 1468 树分治
    Codeforces Round #376 (Div. 2)
    CodeVS 线段覆盖1~5
    Luogu 3396 权值分块
    BZOJ 2743 树状数组
  • 原文地址:https://www.cnblogs.com/joycelishanhe/p/3953870.html
Copyright © 2020-2023  润新知