添加监听器,监控Session,当Session存入数据时触发方法;
1.在web.xml添加监听器
<listenner>com.xxx.xxx.LoginListenner</listenner>
2.创建监听类
/**
* @author: Knn
*/
public class LoginListenner implements HttpSessionAttributeListener {
// 用于存放账号和session对应关系map
private Map map = new HashMap();
@Override
public void attributeAdded(HttpSessionBindingEvent event) {
String name = event.getName();
if (name.equals("token")) {
User user = (User) event.getValue();
if (map.get(user.getId()) != null) {
HttpSession session = (HttpSession)map.get(user.getId());
session.removeAttribute(user.getId());
session.invalidate();
}
map.put(user.getId(), event.getSession());
}
}
@Override
public void attributeRemoved(HttpSessionBindingEvent event) {
String name = event.getName();
if (name.equals("token")) {
User user = (User)event.getValue();
map.remove(user.getId());
}
}
@Override
public void attributeReplaced(HttpSessionBindingEvent event) {
}
public Map getMap() {
return map;
}
public void setMap(Map map) {
this.map = map;
}
}
3.当其他方法/类中的Session保存名为“token”,则触发方法。