定时销毁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

}

}

时间: 2024-10-10 06:35:55

定时销毁session的相关文章

PHP7中如何设置session和销毁session

PHP7中如何设置session和销毁sessionsession可以保存任何的数据类型1,开始session会话session_start() 2,设置session $_SESSION['USENAME']="96net.com.cn"; 3,销毁session unset($_SESSION['views']); session_destroy(); 关于session保存在服务器的位置,可以用的数据库代替,可以达到多台服务器同时使用 session_save_path 原文地址

PHP学习笔记:删除与销毁session

删除某个session值可以使用PHP的unset函数,删除后就会从全局变量$_SESSION中去除,无法访问. session_start(); $_SESSION['name'] = 'jobs'; unset($_SESSION['name']); echo $_SESSION['name']; //提示name不存在 如果要删除所有的session,可以使用session_destroy函数销毁当前session,session_destroy会删除所有数据,但是session_id仍然

销毁session的四种方法

单独的销毁一个单元,即把$_SESSION数组中的一个单元消除掉:unset($_SESSION['user']); 把$_SESSION数组给清空:$_SESSION = array(); 利用方法把$_SESSION数组给清空:session_unset(); 直接把文件给删除:session_destroy();

监听器的小示例:利用HttpSessionListener和HttpServletContextListener实现定时销毁HttpSession

1.创建MyServletContextListener实现HttpServletContextListener接口 @Override public void contextDestroyed(ServletContextEvent sce) { } @Override public void contextInitialized(ServletContextEvent sce) { //创建一个list集合来存放所有的httpSession,必须要为这个集合加锁(多线程访问) final L

day17_Listener与Filter

一.Listener监听器(了解) Javaweb开发中的监听器,是用于监听web常见对象的. ? ? 例如web的常见对象有:ServletContext.HttpServletRequest.HttpSession ? ? 监听它们的创建与销毁.属性变化.session绑定javaBean. 1.监听机制 ? ? 事件:就是一个事情.? ? 事件源:产生这个事情的源头.? ? 监听器:用于监听指定的事件的对象.(关联事件和事件源)? ? 注册监听:要想让监听器可以监听到事件产生,必须对其进行

JAVAWEB开发之Session的追踪创建和销毁、JSP详解(指令,标签,内置对象,动作即转发和包含)、JavaBean及内省技术以及EL表达式获取内容的使用

Session的追踪技术 已知Session是利用cookie机制的服务器端技术,当客户端第一次访问资源时 如果调用request.getSession() 就会在服务器端创建一个由浏览器独享的session空间,并分配一个唯一且名称为JSESSIONID的cookie发送到浏览器端,如果浏览器没有禁用cookie的话,当浏览器再次访问项目中的Servlet程序时会将JSESSIONID带着,这时JSESSIONID就像唯一的一把钥匙  开启服务器端对应的session空间,进而获取到sessi

java:session的创建与销毁

创建session: ServletActionContext.getRequest().getSession().setAttribute("update", model); DutiesScienceEndowScore update = (DutiesScienceEndowScore) ServletActionContext.getRequest().getSession().getAttribute("update"); 销毁session: Servl

JAVAWEB开发之Session的追踪创建和销毁、JSP具体解释(指令,标签,内置对象,动作即转发和包括)、JavaBean及内省技术以及EL表达式获取内容的使用

Session的追踪技术 已知Session是利用cookie机制的server端技术.当client第一次訪问资源时 假设调用request.getSession() 就会在server端创建一个由浏览器独享的session空间,并分配一个唯一且名称为JSESSIONID的cookie发送到浏览器端,假设浏览器没有禁用cookie的话,当浏览器再次訪问项目中的Servlet程序时会将JSESSIONID带着.这时JSESSIONID就像唯一的一把钥匙  开启server端相应的session空

session销毁

session.invalidate(),session.invalidate的销毁是把这个session所带的用户彻底的销毁,这个session跟用户已经紧密联合在一起,所以就一起销毁了,这样就算换了个session,也是登陆不了的,曾经我的代码就是这样写的,以下: ((HttpSession) sc.getAttribute(userName)).invalidate();// 清除第一次登陆的session 这样销毁的但是userName啊,所以要注意,销毁session的时候绝对不能用这