定时器Timer&监听器Listener

本文介绍了如何利用定时器Timer和监听器Listener来实现Web应用中Session的自动清理。当用户的访问时间超出预设阈值时,系统会删除Session。在配置Listener时需注意线程安全问题,特别是访问Session列表时,可能引发的问题及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用定时器定时删除服务器端保存的Session

对于一个Web应用,N个用户访问就会产生N个Session,但如果成千上万的用户进行访问,总不能服务器一直保存所有的Session。就想是不是可以通过计算当前系统时间和上一次访问时间进行计算,如果超出一定的时间,那么就删除Session
我们使用监听器Listener监听Session对象和ServletContext对象

package com.itdream.listener;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import java.util.List;

/**
 * 监听HttpSession对象
 * Created by Dream on 2017/12/7.
 */
public class MySessionListener implements HttpSessionListener {
   
    @Override
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
        //通过事件源对象获得事件源
        HttpSession session = httpSessionEvent.getSession();
        //通过session对象获取servletContext对象
        ServletContext application = session.getServletContext();
        List<HttpSession> list = (List<HttpSession>) application.getAttribute("sessions");
        list.add(session);
    }
    @Override
    public void 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值