监听器概念
监听器就是一个实现特定接口的普通java程序,
这个程序专门用于监听一个java对象的方法调用或属性改变,
当被监听对象发生上述事件后,监听器某个方法将立即被执行。
监听器典型案例:掩耳盗铃
被监听对象(事件源-盗铃的人) 监听器对象(铃铛) 事件对象(发现盗铃就弄死他)
自己定义一个监听器原理分析
需求 定义一个person,监听person的状态
步骤
第一步: 定义一个接口,生命要监听的方法
第二步:在类中调用监听器方法
第三步: 设置监听,监听动作
书写监听器的基本步骤
1.写类 (实现相应Listener接口)
2.配置web.xml <listener><listener-class>包名.类名</ listener-class></listener>
Servlet监听器 8个监听
关于生命周期的监听
ServletContextListener
ServletContextListener接口用于监听ServletContext对象的创建和销毁事件。 当ServletContext对象被创建时,激发contextInitialized(sc)方法 当ServletContext对象被销毁时,激发contextDestroyed(sc)方法 创建:服务器启动针对每一个Web应用创建ServletContext 销毁:服务器关闭前先关闭代表每一个Web应用的ServletContext对象
HttpSessionListener
HttpSessionListener接口用于监听HttpSession的创建和销毁 创建一个Session时,sessionCreated(HttpSessionEvent se)方法将会被调用 销毁一个Session时,sessionDestroyed(HttpSessionEvent se)方法将会被调用。 用户每一次访问时,服务器创建session 销毁:如果用户的session 30分钟没有使用,服务器就会销毁session, 我们在web.xml里面也可以配置session失效时间
ServletRequestListener
接口用于监听ServletRequest对象的创建和销毁 Request对象被创建时,监听器的requestInitialized方法将会被调用 Request对象被销毁时,监听器的requestDestroyed方法将会被调用 创建:用户每一次访问,都会创建一个request 销毁:当前访问结束,request对象就会销毁
关于属性的监听
- ServletContextAttributeListener
- HttpSessionAttributeListener
ServletRequestAttributeListener
这三个接口中都定义了三个方法来处理被监听对象中的属性的增加, 删除和替换的事件,同一个事件在这三个接口中对应的方法名称完全相同, 只是接受的参数类型不同。
不需要在web.xml配置的监听
HttpSessionBindingListener
保存在Session域中的对象可以有多种状态: 绑定到Session中;从Session域中解除绑定; 随Session对象持久化到一个存储设备中;随Session对象从一个存储设备中恢复 实现了HttpSessionBindingListener接口的JavaBean对象 可以感知自己被绑定到Session中和从Session中删除的事件 当对象被绑定到HttpSession对象中时,web服务器调用该对象的void valueBound(HttpSessionBindingEvent event)方法 当对象从HttpSession对象中解除绑定时,web服务器调用该对象的void valueUnbound(HttpSessionBindingEvent event)方法
HttpSessionActivationListener
实现了HttpSessionActivationListener接口的JavaBean(需要序列化)对象可以 感知自己被活化和钝化的事件 当往磁盘序列化时钝化 活化:从磁盘中读取出来时活化
有什么用?
统计在线人数
登陆(踢人)