有没有办法“捕获”会话超时事件,以便在无效之前从HttpSession中检索数据?
我们正在实现过滤器接口,而在doFilter方法中,当会话超时时,我们在登录时存储在会话对象中的用户为空。
提前致谢。
答案 0 :(得分:11)
您应该可以为您的webapp注册HttpSessionListener,以便在会话被销毁时收到通知。
它有两种回调方法:
public void sessionCreated(HttpSessionEvent se)
public void sessionDestroyed(HttpSessionEvent se)
HttpSessionEvent
类有getSession
方法可让您获得受影响的会话。
侦听器类已在web.xml
<listener>
<description>My Session Listener</description>
<listener-class>
my.package.MySessionListener
</listener-class>
</listener>
答案 1 :(得分:0)
让用户对象实现HttpSessionBindingListener,然后它可以在会话中添加或删除时自行查看。
答案 2 :(得分:0)
您可以随时添加一段JSP来检查您的会话是否仍处于活动状态或有效状态 - 基本上检查会话变量是否存在(!= null),如果不存在,则将用户重定向到另一页 -
<%
// check for session object
HttpSession validuser = request.getSession();
// check to see if session var exists
if (validuser.getValue("auth_user") == null) {
response.sendRedirect("admin3.jsp?access+denied");
}
// if the session var is null then redirect the user
希望这会有所帮助 马克
来源:http://www.coderanch.com/t/279538/JSP/java/jsp-session-timeout