监听器Listener

Listener表示监听器,是JavaWeb三大组件(Servlet、Filter、Listener)之一。
监听器可以监听就是在application,session,request三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件。
  application 是 ServletContext 类型的对象。
  ServletContext 代表整个web应用,在服务器启动的时候,tomcat会自动创建该对象。在服务器关闭时会自动销毁该对象。

分类

JavaWeb 提供了8个监听器:

创建一个实现了指定接口的java类

监听request--->ServletRequestListener  监听request对象的创建和销毁
  requestInitialized(ServletRequestEvent sre)//创建
  requestDestroyed(ServletRequestEvent sre)//销毁
  注意:形参可以获取监听的request对象
    sre.getServletRequest();
监听request--->ServletRequestAttributeListener  监听request作用域数据的变更。
  attributeAdded(ServletRequestAttributeEvent srae)
  attributeRemoved(ServletRequestAttributeEvent srae) 
  attributeReplaced(ServletRequestAttributeEvent srae)
  注意:形参可以获取被监听的数据 
    srae.getName()  获取监听数据的键
    srae.getValue() 获取监听数据的值
监听session--->HttpSessionListener 监听session的创建和销毁
  sessionCreated(HttpSessionEvent se)  创建
  sessionDestroyed(HttpSessionEvent se) 销毁
  注意:形参可以获取被监听的session对象
    se.getSession();
监听session--->HttpSessionAttributeListener 监听session数据的变更
  attributeAdded(HttpSessionBindingEvent event)
  attributeRemoved(HttpSessionBindingEvent event)
  attributeReplaced(HttpSessionBindingEvent event)
  注意:形参可以获取被监听的数据
    event.getName()  获取数据的键名
    event.getValue() 获取数据的值
监听application--->ServletContextListener 监听application对象的初始化和销毁
  void contextInitialized(ServletContextEvent sce):ServletContext 对象被创建了会自动执行的方法
  void contextDestroyed(ServletContextEvent sce):ServletContext 对象被销毁时会自动执行的方法
  注意:形参可以获取当前application对象。
    sce.getServletContext();
监听application--->ServletContextAttributeListener 监听数据的变更
  attributeAdded(ServletContextAttributeEvent event)
  attributeRemoved(ServletContextAttributeEvent event)
  attributeReplaced(ServletContextAttributeEvent event)
  注意:形参可以获取当前监听的数据
    event.getName()  获取数据的键名
    event.getValue() 获取数据的值

这里面只有ServletContextListener这个监听器后期我们会接触到,ServletContextListener是用来监听ServletContext对象的创建和销毁。

ServletContextListener 使用

 1 @WebListener
 2 public class ContextLoaderListener implements ServletContextListener {
 3     @Override
 4     public void contextInitialized(ServletContextEvent sce) {
 5         //加载资源
 6         System.out.println("ContextLoaderListener...");
 7     }
 8     @Override
 9     public void contextDestroyed(ServletContextEvent sce) {
10         //释放资源
11     }
12 }

  启动服务器,就可以在启动的日志信息中看到 contextInitialized() 方法输出的内容,同时也说明了 ServletContext 对象在服务器启动的时候被创建了。

posted @ 2020-03-27 23:26  溯鸣  阅读(176)  评论(0编辑  收藏  举报