Listener简单概述

来源:互联网 发布:手机app软件下载 编辑:程序博客网 时间:2024/05/22 14:12

Listener:
 监听器,它用于监听Java Web程序中的事件
 Listener主要对Session,request,context进行监控

Listener的使用需要去实现相应的Listener接口,在应该触发Listener事件的时候,Tomcat会自动调用Listener方法
SessionListener:
public class SessionListener implements HttpSessionListener {

 @Override
 public void sessionCreated(HttpSessionEvent se) {
  //这个方法在Session被创建的时候会调用
  HttpSession session = se.getSession();
  System.out.println("创建一个session:"+session);
  
 }

 @Override
 public void sessionDestroyed(HttpSessionEvent se) {
  //session被销毁的时候调用这个方法
  HttpSession session = se.getSession();
  System.out.println("销毁了一个session:"+session);
 }
}
接下来在web.xml当中要做相应的配置
 <listener>
   <listener-class>com.xiaoxie.listener.SessionListener</listener-class>
 </listener>
<listener>标签一般是配置在<servlet>标签之前
在一个web.xml当中是可以配置多个listener的
Listener分类:
 1,监听对象的创建和销毁
 HttpSessionListener,ServletContextListener,ServletRequestListener分别用于监听Session,Context,Request的创建和销毁
 HttpSessionListener:
  sessionCreated(HttpSessionEvent se)在创建session时会执行
  sessionDestoryed(HttpSessionEvent se)在session超时或调用session.invalidate()时会执行
 ServetContextListener:
  Context代表了当前的应用程序
  contextInilitialized(ServletContextEvent event):服务器启动或热部署war包时执行
  contextDestroyed(ServletContextEvent event):服务器关闭或者只关闭web时执行
 ServletRequestListener:
  requestInitialized(ServletRequestEvent event):每次请求都会执行
  requestDestoryed(ServletRequestEvent event):request处理完毕自动销毁前执行
  注意:如果请求的html中含有多个图片的话则会在一次html请求中触发多次request事件

Java中类是可以实现多接口的,这样的话则一个类可以实现多个Listener接口

 2,监听对象的属性变化:
 这个是用来监听Session,Context,Request的属性变化的,接口名称格式是xxxAttributeListener
 HttpSessionAttributeListener,ServletContextAttributeListener,ServletRequestAttributeListener
 当对象中添加,更新,移除属性时会调用类似如下的方法
 attributeAdded(),attributeReplaced(),attributeRemoved()
 
 3,监听Session内的对象
 它有两种Listener,分别是HttpSessionBindingListener和HttpSessionActivationListener
 HttpSessionBindingListener:
  valueBound(HttpSessionBindingEvent event):当对象被放到Session中去的时候会执行
  valueUnbound(HttpSessionBindingEvent event):当对象被从Session中移除的时候会执行
 HttpSessonActivationListener:
  sessionWillPassivate(HttpSessionEvent se):在Session中内容钝化时执行
  注意:钝化就是指的服务器关闭的时候会把Session中的内容存到硬盘中去
  sessionDidActivate(HttpSessionEvent se):在服务器重新启动时,session对象被重新加载的时候

0 0
原创粉丝点击