如题....

解决方案 »

  1.   

    提供一个简单的基于J2EE的思路:核心:应用Session在web.xml中配置一个Listener,用来监听Session用户登陆时把用户信息放在Session中需要时来查看Session的信息就知道哪些用户在线了
      

  2.   

    应用application实现可以写一个类,然后在页面中利用<jsp:useBean/>实现在页面中,类中实现自加的功能,大概能实现在线人数统计
      

  3.   

    一个session就有一个id 可以在写一个类获得所有的session 中的 id
      

  4.   

    请问 Listener 监听接口要怎么写,代码,代码让我参考下,先谢了
      

  5.   

    在web.xml中的配置<listener>
     <listener-class>
      这里写你的Listener类名
     </listener-class>
    </listener>
    Listener类需要扩展自HttpSessionBindingListenerimport javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSessionBindingEvent;
    import javax.servlet.http.HttpSessionBindingListener;public class OnlineUsers implements HttpSessionBindingListener {
    /** 
     * 对象实例(即OnlineUserListener的实例)作为一个属性被设置到session的 
     * 时候,会调用本方法,这种情况一般发生在点击登录按钮以后的处理过程中 
     * 设置 
     * @see javax.servlet.http.HttpSessionBindingListener#valueBound(javax.servlet.http.HttpSessionBindingEvent) 
     */
    public void valueBound(HttpSessionBindingEvent event) {
    // TODO
    } /** 
     * 当Session超时,或本实例被从session中移除的时候被调用,这种情况一般 
     * 发生在注销方法的处理过程中 
     * @see javax.servlet.http.HttpSessionBindingListener#valueUnbound(javax.servlet.http.HttpSessionBindingEvent) 
     */
    public void valueUnbound(HttpSessionBindingEvent event) {
    // TODO
                    //event.getSession().invalidate();
    }
    }
      

  6.   

    SESSION的监听啊,,不过效果一般,非实时的统计
      

  7.   

    多谢pinkcoco 
    还想请教下大家下,我在线用户可以统计出来,不过现在就是在销毁session时,
    list中的用户不知怎样移除(list中存放着是用户的对象UserVO )?
    public class OnlineUser implements HttpSessionAttributeListener{ private static List lt_user=new ArrayList();

    public void attributeAdded(HttpSessionBindingEvent arg0) {
    // TODO Auto-generated method stub
    if("online_user_name".equals(arg0.getName())){
    UserVO userInfo = new UserVO();
    System.out.println("---用户名---"+arg0.getValue());
    loginInfo.setUsername(arg0.getValue().toString());
    lt_user.add(userInfo);
    // System.out.println("add在线用户人数:"+lt_user.size());
    }
    } public void attributeRemoved(HttpSessionBindingEvent arg0) {
    // TODO Auto-generated method stub
    if("online_user_name".equals(arg0.getName())){
    System.out.println("释放用户:"+arg0.getValue());
    lt_user.remove(" ")  //请问这里应该怎样移除用户????????? System.out.println("remove在线用户人数:"+lt_user.size());
    }
    } public void attributeReplaced(HttpSessionBindingEvent arg0) {
    // TODO Auto-generated method stub
    }
    public static List getList(){
    return lt_user;
    }

    }
      

  8.   

    移除整个list不行吗??
    你不是把所有的用户放在一个list里了吗?
    也就是说当用户登录进来以后拟通过Lister监听到以后
    List onlineList = new ArrayList();
    onlineList.add("每一次登录进来的用户");
    HttpSession session = request.getSession(true);//
    session.setAttribute("online",onlineList);
    因为之用加入到list里面的用户才为在线用户了~他要是下线的话,你直接在list中把它删除了不就行了啊~~
    通过list的remove方法删除元素,这样你就不用关session中的onlineList 了