Listener监听器

监听器(listener)
监听对象的创建与连接
ServletContextListener(这个对象是在服务器启动时创建的,在服务器关闭时销毁)
HttpSessionListener(1.默认30分钟;2.关闭服务器;3.invalidate();4.setMaxInactiveInterval(int interval))
        ServletRequestListener(Request对象发送请求服务器就会创建,当响应产生时,request对象就会销毁。)
    监听属性的创建与连接
ServletContextAttributeListener
HttpSessionAttributeListener
ServletRequestAttributeListener
public class MyServletRequestAttributeListener implements ServletRequestAttributeListener {
    @Override
    public void attributeAdded(ServletRequestAttributeEvent servletRequestAttributeEvent) {
        System.out.println("ServletRequest添加属性了");
    }

    @Override
    public void attributeRemoved(ServletRequestAttributeEvent servletRequestAttributeEvent) {
        System.out.println("ServletRequest移除属性了");
    }

    @Override
    public void attributeReplaced(ServletRequestAttributeEvent servletRequestAttributeEvent) {
        System.out.println("ServletRequest替换属性了");
        System.out.println(servletRequestAttributeEvent.getName() + servletRequestAttributeEvent.getValue());
    }
}
View Code
    监听javaBean 绑定监听(不需要再web.xml中注册)
HttpSessionBindingListener
  
    活化或者钝化(HttpSessionActivationListener如果javaBean实现了这个接口,那么当我们正常关闭服务器时,session中的javaBean对象就会被钝化到我们指定的文件中。

当下一次在启动服务器,因为我们已经将对象写入到文件中,这时就会自动将javaBean对象活化到session中
        HttpSessionActivationListener
public class MyServletContextListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
      
                System.out.println("开始扫描了");
                for(Iterator iterator = list.iterator();iterator.hasNext();){
                    HttpSession session = (HttpSession) iterator.next();
                    long l = System.currentTimeMillis() -session.getLastAccessedTime();
                    if(l > 5000){
                        System.out.println("session已处理"+session.getId());
                        session.invalidate();
                        //list.remove(session);
                        iterator.remove();
                    }
                }
            }
        }, 2000, 5000);//延迟两秒后执行,间隔5秒执行一次
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        System.out.println("ServletContext销毁了");
    }
}
View Code
    
posted @ 2019-03-10 19:03  紫色的雪  阅读(103)  评论(0)    收藏  举报