您好我需要拦截我的网络应用程序中的会话过期。
我会拦截它,因为我想要获取会话属性,并在销毁会话之前存储它。
有可能??你能给我任何建议吗?
谢谢!
答案 0 :(得分:3)
您可以使用HttpSessionListener。
看起来像这样:
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
@WebListener
public class MyHttpSessionListener implements HttpSessionListener {
@Override
public void sessionDestroyed(HttpSessionEvent se) {
Object attribute = se.getSession().getAttribute("foo");
}
@Override
public void sessionCreated(HttpSessionEvent se) {
}
}
答案 1 :(得分:3)
我认为您希望在会话被销毁之前从会话中获取该属性,并将其“存储”在其他地方。
下面使用的 sessionDestroyed 在会话被销毁后被调用,我不确定servlet容器是否会让你在会话被销毁后获取属性,但这值得尝试。
在那种情况下:
在 sessionDestroyed(HttpSessionEvent e)中,编写以下代码:
Object attr = e.getSession().getAttribute("attr_name");
将此'attr'对象存储在其他位置。
即使会话被销毁,您仍然会引用'attr'对象。
通常,您将在web.xml中注册MySessionListener:
<web-app ...>
<listener>
<listener-class>com.app.MySessionListener</listener-class>
</listener>
</web-app>
答案 2 :(得分:2)
实现HttpSessionListener并覆盖sessionDestroyed(HttpSessionEvent事件)方法以根据您的要求进行自定义。