有什么方法可以预测会话超时?

时间:2010-06-17 18:11:00

标签: java struts servlet-filters session-timeout

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

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

提前致谢。

3 个答案:

答案 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