我的java Web应用程序(tomcat8,servlet3)中有List<entity> ctx
个entity
类,我为每个会话(用户)保留了一个带有我的上下文(list)的实例,以及一个引用复制到用户的会话中,如下所示。
javax.servlet.http.HttpSession sess=request.getSession(true);
//declaring and initializing the entity object
entity e=new entity();
e.timestamp=System.currentTimeMillis();
//keep the e with the session
sess.setAttribute("e",e);
//and a reference copy with another context
ctx.add(e);
问题:
我只想知道(一个事件,监听器......)用户http会话,以便在会话过期(删除)时从entity
中删除ctx
对象。
现在我如何才能意识到会话正在从服务器过期?
答案 0 :(得分:1)
只需使用HttpSessionListener
即可。它专门用于该用途。只需覆盖sessionDestroyed(HttpSessionEvent se)
:
@Override
public void sessionDestroyed(HttpSessionEvent se) {
HttpSession session = se.getSession();
// do your processing
}
@Override
public void sessionCreated(HttpSessionEvent se) {
// empty implementation if you do not need it ...
}
别忘了申报。从javadoc中提取:为了接收这些通知事件,实现类必须在Web应用程序的部署描述符中声明,使用WebListener注释,或者通过ServletContext上定义的addListener方法之一注册