08-12
30
session监听器 监听在线用户和登录用户
作者:Java伴侣 日期:2008-12-30
复制内容到剪贴板 程序代码
<!--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);
}
<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);
}
评论: 0 | 引用: 0 | 查看次数: 745
发表评论