定时销毁session

Posted 殷瑜泰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定时销毁session相关的知识,希望对你有一定的参考价值。

通过使用监听定时器,来定时销毁session

demo:

public class MyServletContextListener implements ServletContextListener {

   

public void contextInitialized(ServletContextEvent sce) {

//通过事件源对象得到事件源(ServletContext

ServletContext application = sce.getServletContext();

//创建一个集合用于存储所有session对象

final List<HttpSession> list =Collections.synchronizedList(new ArrayList<HttpSession>());

   

//把集合放到application域中

application.setAttribute("sessions", list);

   

//创建一个计时器对象

Timer t = new Timer();

   

t.schedule(new TimerTask() {

   

@Override

public void run() {

System.out.println("开始扫描了。。。");

for (Iterator iterator = list.iterator(); iterator.hasNext();) {

HttpSession session = (HttpSession) iterator.next();

long l = System.currentTimeMillis()-session.getLastAccessedTime();

if(l>5000){//如果时间大于5秒,把session销毁

System.out.println("session移除了"+session.getId());

session.invalidate();//session销毁

//list.remove(session);//从集合中移除

iterator.remove();

}

   

}

/*for (HttpSession session : list) {

long l = System.currentTimeMillis()-session.getLastAccessedTime();

if(l>5000){//如果时间大于5秒,把session销毁

session.invalidate();//session销毁

list.remove(session);//从集合中移除

}

}*/

}

}, 2000, 5000);//延迟2秒后执行,每间隔5秒执行一次

}

   

public void contextDestroyed(ServletContextEvent sce) {

   

}

   

}

public class MySessionListener implements HttpSessionListener {

   

public void sessionCreated(HttpSessionEvent se) {

HttpSession session = se.getSession();

//得到application对象中的list集合

ServletContext application = session.getServletContext();

//得到session对象,并放入到list集合中

List<HttpSession> list = (List<HttpSession>) application.getAttribute("sessions");

   

list.add(session);

System.out.println("添加了"+session.getId());

}

   

public void sessionDestroyed(HttpSessionEvent se) {

// TODO Auto-generated method stub

   

}

   

}

   

以上是关于定时销毁session的主要内容,如果未能解决你的问题,请参考以下文章

销毁定时器

vue 在一个页面监听定时用了之后要销毁,不然在其他页面会报错

PHP7中如何设置session和销毁session

vue组件里定时器销毁问题

listener之定时销毁 session

Vue中在组件销毁时清除定时器(setInterval)