session 取键值
package com.tocersoft.base.filter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import com.tocersoft.member.entity.Member;
//session监听器.
//
// 在WEB容器的web.xml中添加本监听器的调用,具体格式如下:(其中的"[","]"分别用" "替换)
//
// [listener][listener-class]com.tocersoft.base.filter.SessionListener[/listener-class][/listener]
//
// 其中“com.tocersoft.base.filter.SessionListener”根据类的实际位置定义
//
public class SessionListener implements HttpSessionAttributeListener {
// 定义监听的session属性名.
public final static String LISTENER_NAME = "user";
// 定义存储客户登录session的集合.
private static List sessions = new ArrayList();
// 加入session时的监听方法.
public void attributeAdded(HttpSessionBindingEvent sbe) {
if (LISTENER_NAME.equals(sbe.getName())) {
Member member = (Member)sbe.getValue();
// 判断存入的对象是否包含在list中,如果已包含则不添加
// if(!getSessions().contains(member)){
// sessions.add(member);
// }
if(getSessions().size() == 0 ){
sessions.add(member);
}else{
// 判断存入的对象是否包含在list中,如果已包含则不添加
boolean bl = true;
for (int i = 0; i < getSessions().size(); i++) {
if(getSessions().get(i).getId().equals(member.getId())){
bl = false;
break;
}
}
if(bl){
sessions.add(member);
}
}
}
}
// session失效时的监听方法
public void attributeRemoved(HttpSessionBindingEvent sbe) {
if (LISTENER_NAME.equals(sbe.getName())) {
sessions.remove(sbe.getValue());
}
}
// session覆盖时的监听方法.
public void attributeReplaced(HttpSessionBindingEvent sbe) {
}
// 返回客户登录session的集合.
public static List getSessions() {
return sessions;
}