在下面的代码中,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>
答案 0 :(得分:2)
我们没有可靠的方式联系服务器来使会话无效, 例如:网络丢失/断电:(无法联系服务器)
但是在浏览器关闭时,您可以使用onunload事件捕获用户的浏览器关闭事件并触发注销请求。
同样在会话超时期间,侦听器的sessionDestroyed()将被执行