谁使用application和session的做过聊天室? 如果做过那聊天室的话。这个问题就解决了

解决方案 »

  1.   

    为什么一定要用HttpSessionListener呢
    HttpSessionListener中有个sessionCreated(HttpSessionEvent se),在创建Session时被调用,所以要想在其中判断用户是否登陆比较难
      

  2.   

    to :swei412() 
    那应该怎么做? 还有什么接口能实现吗?  我要源码!谢谢!!
      

  3.   

    package SessionCounter;import javax.servlet.*;
    import javax.servlet.http.*;
    import java.util.*;
    import com.oztime.right.UserObject;public class SessionCounter implements HttpSessionListener {private static int activeSessions = 0;
    private static Vector v= new Vector();
    public void sessionCreated(HttpSessionEvent se) {
    }
    public static void createsession(HttpSessionEvent se ) {
        UserObject user1 =(UserObject)se.getSession().getAttribute("UserObject");
        if(v.contains(user1)==false){
          v.add(user1);
          activeSessions++;
          System.out.println("===================用户名称=================="+user1.getName());
          System.out.println("===================用户数量=================="+activeSessions);
        }  }public void sessionDestroyed(HttpSessionEvent se) {
        System.out.println("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
        UserObject user2=(UserObject)se.getSession().getAttribute("UserObject");
        if(v.contains(user2)==true){
          v.remove(user2);
          activeSessions--;
          System.out.println("===================removed=================="+user2.getName());
        }  }
      public static  void Destroysession(UserObject user) {
          //System.out.println("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
          //UserObject user3=(UserObject)se.getSession().getAttribute("UserObject");
          System.out.println("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"+user.getName());
          if(v.contains(user)==true){
            v.removeElement(user);
            activeSessions--;
            System.out.println("====================================="+user.getName()+"---退出登录!!!");
          }  }public static int getActiveSessions() {
        return activeSessions;}public static Vector getVector() {
        return v;
    }
    }
      

  4.   

    请教duanyuxy123 几个问题public static void createsession(HttpSessionEvent se ) {
        UserObject user1 =(UserObject)se.getSession().getAttribute("UserObject");
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        上面这行代码能否取得用户对象(UserObject)表示疑问??? 
         因为此事件是session创建时产生的。你并没有对也不可能对session 赋值。你怎么获取? session刚建立,只有sessionID值其他均为空!!    if(v.contains(user1)==false){
          v.add(user1);
          activeSessions++;
          System.out.println("====用户名称==============="+user1.getName());
          System.out.println("====用户数量==============="+activeSessions);
        }
    }能否说清楚一些??再一个createsession好像不是HttpSessionListener的接口。你是如何使用的???
      

  5.   

    你的疑问是对的public static void createsession(HttpSessionEvent se ) {
        UserObject user1 =(UserObject)se.getSession().getAttribute("UserObject");
    这个方法是自定义的  是在用户登陆后调用的
    SessionCounter.createsession(new HttpSessionEvent(session));