监听器

监听器

概述
API
    ServletContextListener  
        在Servlet上下文对象初始化或者销毁时得到通知,位于javax.servlet包下
        常用方法:
            contextInitialized(ServletContextEvent  arg)    
                在Web应用程序初始化开始时由Web容器调用,该方法无返回值
            contextDestory(ServletContextEvent  arg)    
                当Servlet上下文将要关闭时由Web容器调用,该方法无返回值
    ServletContextAttributeListener 
        在Servlet上下文中的属性列表发生变化时得到通知,位于javax.servlet包下
    HttpSessionListener 
        在Session创建后或者失效前得到通知,位于javax.servlet.http包下
    HttpSessionActivationListener   
        实现该接口的对象,如果绑定到Session中,当Session被钝化或者激活时,Servlet容器将通知该对象,位于javax.servlet.http包下
    HttpSessionBindingListener接口
        常用方法:
            valueBound(HttpSessionBindingEvent event)   
                当对象被添加到Session时,由容器调用该方法来通知对象,该方法无返回值
            valueUnbound(HttpSessionBindingEvent event) 
                当对象从Session中清除时,由容器调用该方法来通知对象,该方法无返回值
ServletContext监听
    public class MyContextListener implements ServletContextListener, ServletContextAttributeListener {
        @Override
        public void attributeAdded(ServletContextAttributeEvent arg0) {
            System.out.println("属性添加");
        }
        @Override
        public void attributeRemoved(ServletContextAttributeEvent arg0) {
            System.out.println("属性修改");
        }
        @Override
        public void attributeReplaced(ServletContextAttributeEvent arg0) {
            System.out.println("属性删除");
        }
        @Override
        public void contextDestroyed(ServletContextEvent arg0) {
            System.out.println("ServletContext对象销毁时调用");
        }
        @Override
        public void contextInitialized(ServletContextEvent arg0) {
            System.out.println("ServletContext对象创建时调用");
        }
    }
    
        com.shuai.listeners.MyContextListener
    
HttpServletRequest监听
    public class MyRequestListener implements ServletRequestListener, ServletRequestAttributeListener {
        @Override
        public void attributeAdded(ServletRequestAttributeEvent arg0) {
            System.out.println("增加属性");
        }
        @Override
        public void attributeRemoved(ServletRequestAttributeEvent arg0) {
            System.out.println("删除属性");
        }
        @Override
        public void attributeReplaced(ServletRequestAttributeEvent arg0) {
            System.out.println("替换属性的值");
        }
        @Override
        public void requestDestroyed(ServletRequestEvent arg0) {
            System.out.println("request销毁");
        }
        @Override
        public void requestInitialized(ServletRequestEvent arg0) {
            System.out.println("request创建");
        }
    }
    
        com.shuai.listeners.MyRequestListener
    
HttpSession监听
    public class MySessionListener implements HttpSessionListener, HttpSessionAttributeListener {
        @Override
        public void attributeAdded(HttpSessionBindingEvent arg0) {
            System.out.println("新增属性");
        }
        @Override
        public void attributeRemoved(HttpSessionBindingEvent arg0) {
            System.out.println("属性移除");
        }
        @Override
        public void attributeReplaced(HttpSessionBindingEvent arg0) {
            System.out.println("修改属性");
        }
        @Override
        public void sessionCreated(HttpSessionEvent arg0) {
            System.out.println("session创建");
        }
        @Override
        public void sessionDestroyed(HttpSessionEvent arg0) {
            System.out.println("session销毁");
        }
    }
    
        com.shuai.listeners.MySessionListener
    
    全局改变session回收时间
        web.xml中配置
            
                1
            
案例
    显示当前登录的用户-并且可以踢出用户
    HTTPSession属性监听器-当用户登录的时候把登录信息保存到session中
    session监听到属性增加的时候,把用户信息保存到application中。
    session监听到属性移除的时候,把用户信息从application中移除。
    一个servlet专门用来做用户的显示
    做一个请求过滤器做权限控制。
其它
    访问者ip
        request.getRemoteHost()
    session创建时间
        session.getCreationTime()
    session最后访问时间
        session.getLastAccessedTime()

你可能感兴趣的:(监听器)