监听器Listener

一、Listener概述

  • Listener主要用于对session、request、context等进行监控。
  • Listener的概述
        Java Web程序,使用Listener与Event完成相应事件的处理。
  • Listener的使用
        首先实现接口HttpSessionListener,
        然后实现以下两个方法:
            public void sessionCreated(HttpSessionEvent se)
            public void sessionDestroyed(HttpSessionEvent se)
        再配置文件:
            <listener>
                <listener-class>
                    xxx.yyy
                </listener-class>
            </listener>
        一个web.xml中可以配置多个Listener。同一种类型的Listener也可以配置多个,
            触发的时候服务器会顺次执行各个Listener的相应方法。

二、Listener的分类

  • 监听对象的创建与销毁
        HttpSessionListener、ServletContextListener、ServletRequestListener
            分别用于监控session、context、request的创建与销毁。触发时机分别为:
        HttpSessionListener:
            监听session的创建与销毁。
            创建session时执行sessionCreated(HttpSessionEvent se)方法。
            超时或者执行session.invalidate()时
                执行sessionDestroyed(HttpSessionEvent se)方法。
            该Listener可用于收集在线者信息。
        ServletContextListener:
            监听context的创建与销毁。context代表当前的Web应用程序。
            服务器启动或者热部署war包时
                执行contextInitialized(ServletContextEvent event)方法。
            服务器关闭时或者只关闭该Web时会
                执行contextDestroyed(ServletContextEvent event)方法。
            该Listener可用于启动时获取web.xml里配置的初始化参数。
        ServletRequestListener:
            监听request的创建与销毁。
            用户每次请求request都会
                执行requestInitialized(ServletRequestEvent event)方法。
            request处理完毕自动销毁前
                执行requestDestroyed(ServletRequestEvent event)方法。
  • 监听对象的属性变化
        另一类Listener用于监听session、context、request的属性变化,
            接口名称格式为xxxAttributeListener,包括HttpSessionAttributeListener、
            ServletContextAttributeListener、ServletRequestAttributeListener。
            当被监听对象中添加、更新、移除属性时,
            会分别执行xxxAdded()、xxxReplaced()、xxxRemoved()方法,
            xxx分别代表session、context、request。
  • 监听session内的对象
        除了上面的6中Listener,还有两种Listener用于监控session内的对象,
            分别是HttpSessionBindingListener与HttpSessionActivationListener。
            它们的触发时机分别是:
        HttpSessionBindingListener:
            当对象被放到session里时
                执行valueBound(HttpSessionBindingEvent event)方法。
            当对象被从session里移除时
                执行valueUnBound(HttpSessionBindingEvent event)方法。
            对象必须实现该Listener接口。
        HttpSessionActivationListener:
            服务器关闭时,会将session里的内容保存到硬盘上,这个过程叫做钝化,
                会执行sessionWillPassivate(HttpSessionEvent se)方法。
            服务器重新启动时,会将session内容从硬盘上重新加载,
                会执行sessionDidActivate(HttpSessionEvent se)方法。
            对象必须实现该Listener接口。
        这两种Listener常用于实现session内的对象对session的监听。

三、Listener使用案例

  • 单态登录
        单态登录,或者称为单一登录,就是一个账号只能在一台机器上登录,
            如果在其他机器上登录了,则原来的登录自动失效。
            单态登录的目的是防止多台机器同时使用一个账号。
  • 显示在线用户
        使用Listener记录服务器的信息,包括启动时间、
            累计访问人数、最大同时在线人数以及发生的时间、
            当前用户数以及当前登录的用户数等,并列出所有的在线用户信息,
            包括账号、第一次访问时间、最后一次访问时间、访问次数以及IP地址等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值