将对象与http会话j2ee关联

时间:2014-10-27 14:49:30

标签: java session tomcat servlets web

我的java Web应用程序(tomcat8,servlet3)中有List<entity> ctxentity类,我为每个会话(用户)保留了一个带有我的上下文(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对象。
现在我如何才能意识到会话正在从服务器过期?

1 个答案:

答案 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方法之一注册