通常监听session并在超时前取到相关信息通过配置Listener由HttpSessionBindingListener来实现
finalize方法是Java垃圾回收类前对该类调用的方法。
所以session超时的时候session里保存的类也就背回收掉,就会触发finalize()
比如有下面一个用户信息类
import java.util.Date;
public class user {
private String date = new Date().toString();
public user(){
System.out.println("create session date="+date);
}
public void finalize(){
System.out.println("回收 session end date="+date);
}
}
这里对finalize方法进行了重写
JSP里将user装入session
<%
if(session.getAttribute("ff")==null){
session.setMaxInactiveInterval(5);//这里为了测试方便设置超时为5秒
session.setAttribute("ff",new user());
}else{
System.out.println(session.getAttribute("ff"));
}
%>
测试结果
session超时,过1分钟后user类被回收
没有超时的时候重复装入user 前面装入session的会很快被回收
通过这个特性
也可以通过finalize()来作用户在线时间等一些功能的实现