08-12
30

session监听器 监听在线用户和登录用户

<!--web.xml-->

<listener>
<listener-class>
   包名+类全名
</listener-class>
</listener>

重写
public class SessionCount implements HttpSessionListener,HttpSessionAttributeListener {

static int count = CountSessionFinal.count;     //在线人数
static int logincount = CountSessionFinal.logincount;   //登陆人数
UserLogin ul=new UserLogin();

/**
* 当创建一个session时在线人数加一
*/
public void sessionCreated(HttpSessionEvent arg0) {
   count++;
  
}

/**
* 当销毁一个session时在线人数减一
*/
public void sessionDestroyed(HttpSessionEvent arg0) {
   count--;
   if (arg0 != null){
    HttpSession session = arg0.getSession();
    ul.userExit(session.toString());//根据session地址删除一登录用户
   }
}

/**
* 当每生成一个UserBean时在线登陆人数加1
*/
public void attributeAdded(HttpSessionBindingEvent arg0) {
   String name=arg0.getName();
   if(name.equals(SessionInfo.USERINFO)){
    logincount++;
    HttpSession session = arg0.getSession();
    UserBean userbean=(UserBean)arg0.getValue();
    String id=userbean.getId();
    ul.userLonin(id,session.toString());//根据用户id,session地址添加一登录用户
   }
}

/**
* 当每删除一个UserBean时在线登陆人数减1
*/
public void attributeRemoved(HttpSessionBindingEvent arg0) {
  
   String name=arg0.getName();
   if(name.equals(SessionInfo.USERINFO)){  
    logincount--;
    HttpSession session = arg0.getSession();
    ul.userExit(session.toString());//根据session地址删除一登录用户
   }
}

public void attributeReplaced(HttpSessionBindingEvent arg0) {
  

}

/**
*
* @return    在线登陆人数
*/
public static int getLoginCount(){
   return logincount;
}

/**
*
* @return    在线人数
*/
public static int getCount(){
   return count;
}

}

数据库表2字段,无主键,一个是用户id,一个是session地址
表里存所有登录人的id和登录时创建的session地址

操作类

public class UserLogin {

DataBase db=new DataBase();

/**
* 用户登录到系统
* @param userid
* @param sessionpath
*/
public void userLonin(String userid,String sessionpath){
   String sql="insert into user_login(userid,sessionpath) values("+userid+",'"+sessionpath+"')";
   db.executeSQL(sql);
}

/**
* 用户退出系统
* @param sessionpath
*/
public void userExit(String sessionpath){
   String sql="delete from user_login where sessionpath='"+sessionpath+"'";
   db.executeSQL(sql);
}

/**
* 清空所有在线session
*
*/
public void clearSession(){
   String sql="delete from user_login";
   db.executeSQL(sql);
}


[本日志由 blurxx 于 2008-12-30 11:37 AM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: session
相关日志:
评论: 0 | 引用: 0 | 查看次数: 672
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭