監聽器的小示例:利用HttpSessionListener和HttpServletContextListener實現定時銷毀HttpSession


1.創建MyServletContextListener實現HttpServletContextListener接口

    @Override
    public void contextDestroyed(ServletContextEvent sce) {        
    }
    @Override
    public void contextInitialized(ServletContextEvent sce) {    
        //創建一個list集合來存放所有的httpSession,必須要為這個集合加鎖(多線程訪問)
        final List<HttpSession>  list=Collections.synchronizedList(new ArrayList<HttpSession>());
        //servletContext添加這個集合
        sce.getServletContext().setAttribute("list", list);
                
        Timer timer=new Timer();//時間調度的類
        timer.schedule(new TimerTask() {
            //調度的任務
            @Override
            public void run() {
                System.out.println("開始掃描了。。。");
                for (Iterator iterator = list.iterator(); iterator.hasNext();) {
                    HttpSession httpSession = (HttpSession) iterator.next();
                    //計算session已存在的時間(當前的系統時間-httpSession最后一次訪問的時間)
                    long l=System.currentTimeMillis()-httpSession.getLastAccessedTime();
                    //存活時間大於10秒 則移除session
                    if (l>10000) {
                        //失效,從集合中刪除httpSesion
                        System.out.println("session失效了:"+httpSession.getId());
                        httpSession.invalidate();
                        iterator.remove();
                    }                
                }            
            }
            //delay: 幾秒后開始執行(秒)
            //period:  執行的間隔時間(秒)
        }, 2000, 5000);    
    }

 

2.創建MyHttpSessionListener實現HttpSessionListener接口

    @Override
    public void sessionCreated(HttpSessionEvent arg0) {
        //服務器一創建httpSession,就向list集合中添加HttpSession
        HttpSession httpSession = arg0.getSession();
        ServletContext application = httpSession.getServletContext();
        List<HttpSession> list = (List<HttpSession>) application.getAttribute("list");
        System.out.println("session創建添加了"+httpSession.getId());
        list.add(httpSession);
    }

注意:實現listener接口 ,一定要配置web.xml文件

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM