有没有办法“捕捉”会话超时事件,以便在 HttpSession 失效之前从其检索数据?
我们正在实现过滤器接口,并且在 doFilter 方法中,我们在登录时存储在会话对象中的用户在会话超时时为空。
提前致谢。
有没有办法“捕捉”会话超时事件,以便在 HttpSession 失效之前从其检索数据?
我们正在实现过滤器接口,并且在 doFilter 方法中,我们在登录时存储在会话对象中的用户在会话超时时为空。
提前致谢。
你应该能够为你的 webapp 注册一个HttpSessionListener,它可以让你在 Session 被销毁时得到通知。
它有两个回调方法:
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>
您总是可以添加一段 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
让用户对象实现 HttpSessionBindingListener,然后当它被添加到会话中或从会话中删除时,它可以自己看到。