2

有没有办法“捕捉”会话超时事件,以便在 HttpSession 失效之前从其检索数据?

我们正在实现过滤器接口,并且在 doFilter 方法中,我们在登录时存储在会话对象中的用户在会话超时时为空。

提前致谢。

4

3 回答 3

11

你应该能够为你的 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>
于 2010-06-17T18:17:03.467 回答
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

于 2013-01-25T11:33:53.300 回答
0

让用户对象实现 HttpSessionBindingListener,然后当它被添加到会话中或从会话中删除时,它可以自己看到。

于 2010-06-17T23:47:56.687 回答