Session统计用户在线数量问题

谁有思路,求大神
HttpSession session=arg0.getSession();
ServletContext application=session.getServletContext();

    //在application范围有一个HshSet集保存所有的Session
    HashSet sessions= (HashSet) application.getAttribute("sessions");
    if(sessions != null){
        sessions=new HashSet();
        application.setAttribute("sessions", sessions);
    }
    //新创建的session均添加到HashSet集中
    sessions.add(session);
    System.out.println("当前在线人数:"+sessions.size());
    这样报空指针

if(sessions != null){
sessions=new HashSet();
application.setAttribute("sessions", sessions);
}
这个逻辑判断有问题,应该是sessions == null才进行初始化。
所以改成
if(sessions == null){
sessions=new HashSet();
application.setAttribute("sessions", sessions);
}
这样就不会出现空指针了
希望能够帮到你

分配一个session你+1

int sum=0;
if(sessions != null){
sessions=new HashSet();
application.setAttribute("sessions", sessions);
sum++;
}
syso(sum);

我有一个js统计方可人数的,是用cookie写的,地址:http://blog.csdn.net/qq736150416/article/details/51799389可以看下

今天刚好做了这个在线统计用户人数的项目,就在此将思路说一下,献丑了。。。。
理清楚三个问题:
1、用户人数这个变量userNumber应存储在哪?
这个用户人数的变量userNumber应存储到application域对象的属性当中,因为从web应用程序开启时就应该进行用户人数统计直到该web应用停止
或重启
2、什么时候人数加1?
创建一个类继承HttpSessionListener并实现其两个方法sessionCreated()和sessionDestroyed(),当用户访问服务器时,Servlet容器此时会开启一个线程并调用sessionCreate方法,在这个方法中让变量userNumber加1并将其添加到application域对象属性当中
3、什么时候人数减1?
当用户退出访问该web应用程序时,会立即调用和sessionDestroyed(),此时在这个方法中让变量userNumber减1并将其添加到application域对象属性当中

示例代码如下:

@WebListener("统计用户在线人数")

public class MyHttpSessionListener implements HttpSessionListener {

private int userNumber = 0;  // 用户在线人数

@Override
public void sessionCreated(HttpSessionEvent httpSessionEvent) {
    userNumber++;  // 人数加1
    httpSessionEvent.getSession().getServletContext().setAttribute("userNumber", userNumber);  // 将userNumber添加到application域对象属性当中
}

@Override
public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
    userNumber--; // 人数减1
    httpSessionEvent.getSession().getServletContext().setAttribute("userNumber", userNumber);  // 再次将userNumber添加到application域对象的属性当中

}

}

统计在线用户及数量这个功能的作用:
1、通过在线用户统计功能,可以知道该网站用户的访问情况和使用情况,进而得知该网站受欢迎的程度和宣传效果好不好。
2、对于应用平台而言,可以考核使用人员的日常使用情况

线程安全么。。。你这个number是共享的啊