当用户关闭浏览器时,sessionlistner无法正常工作

时间:2012-11-17 05:41:00

标签: java session session-timeout sessionid servlet-listeners

在下面的代码中,sessionCreated在创建新会话时正在工作。但是sessionDestroyed只有在我们调用session.invalidate()时才有效。 在下列情况下,我怎样才能使它发挥作用 **

1)用户关闭浏览器

2)系统断电

3)会话超时**

 import java.util.*;
 import javax.servlet.*;
 import javax.servlet.http.*;
 public class SesListener implements HttpSessionListener 
 {
long sttime,endtime;
public void sessionCreated(HttpSessionEvent se)
{
    sttime=System.currentTimeMillis();
    HttpSession ses=se.getSession();
    ServletContext sc=ses.getServletContext();
    sc.log("session started at "+new Date());
    System.out.println("session started at "+new Date());
}

public void sessionDestroyed(HttpSessionEvent se)
{

    endtime=System.currentTimeMillis();
    HttpSession ses=se.getSession();
    ServletContext sc=ses.getServletContext();
    sc.log("session ended at "+new Date());
    System.out.println("session ended  at "+new Date());
}
 }

和我的.xml文件是

 <listener>
   <listener-class>SesListener</listener-class>
 </listener>

1 个答案:

答案 0 :(得分:2)

我们没有可靠的方式联系服务器来使会话无效, 例如:网络丢失/断电:(无法联系服务器)

但是在浏览器关闭时,您可以使用onunload事件捕获用户的浏览器关闭事件并触发注销请求。

同样在会话超时期间,侦听器的sessionDestroyed()将被执行