设为首页 加入收藏

TOP

day25-Listener监听器(一)
2023-07-25 21:35:06 】 浏览:49
Tags:day25-Listener

Listener监听器

1.Listener监听器介绍

  1. Listener监听器是JavaWeb三大组件之一。JavaWeb三大组件分别是:Servlet程序,Listener监听器,Filter过滤器。
  2. Listener是JavaEE的规范,即接口。
  3. 监听器的作用是,监听某种变化(一般就是对象的创建/销毁,属性变化),触发对象方法完成相应的任务。
  4. JavaWeb中的监听器共八个,目前最常用的是ServletContextListener,ServletContextAttributeListener,HttpSessionListener和ServletRequestListener

2.JavaWeb的监听器

2.1ServletContextListener监听器

  1. 作用:监听ServletContext创建或者销毁(当我们web应用启动时,Tomcat就会创建ServletContext对象),即生命周期监听
  2. 应用场景:
    • 加载初始化的配置文件;比如spring的配置文件
    • 任务调度(配合定时器Timer/TimerTask)
  3. 相关方法:
    • void contextInitialized(ServletContextEvent sce):创建ServletContext对象时触发
    • void contextDestroyed(ServletContextEven sce):销毁ServletContext对象时触发

应用实例

  1. 首先创建一个项目,添加web支持,因为listener监听器是Servlet规范,要使用就要引入Servlet.jar包

    image-20221127165358783
  2. 创建一个普通类,如果该类实现了某个监听接口,那么此类就是一个监听器。该类可以监听的事件由该类实现的监听接口决定:

    package com.listener;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    
    /**
     * 1.当一个类实现了 ServletContextListener 接口时
     * 2.该类就是一个监听器
     * 3.该类可以监听的事件由该类实现的监听接口决定 ,比如实现ServletContextListener接口,
     * 那么该类就可以监听ServletContext对象的创建和销毁,以此类推
     * 4.下面的MyServletContextListener就是一个监听者
     * 5.当web应用启动时,就会产生ServletContextEvent事件,会调用监听器的对应事件处理方法
     * 如:contextInitialized(),同时会传递 事件对象
     * 6.程序员可以通过 ServletContextEvent 事件对象,来获取需要的信息,然后再进行业务处理
     * 7.Tomcat怎么知道这个监听器存在呢? 因为我们需要在web.xml文件中进行配置,
     * 一旦配置后,tomcat启动后就会反射实例化该监听器,放到容器里面去管理
     */
    public class MyServletContextListener implements ServletContextListener {
        @Override
        public void contextInitialized(ServletContextEvent servletContextEvent) {
            ServletContext servletContext = servletContextEvent.getServletContext();
            System.out.println("MyServletContextListener监听到=" +
                    servletContext + "被创建...");
            //如果我们获取到ServletContext对象..可以进行业务处理
        }
    
        @Override
        public void contextDestroyed(ServletContextEvent servletContextEvent) {
            ServletContext servletContext = servletContextEvent.getServletContext();
            System.out.println("MyServletContextListener监听到=" +
                    servletContext + "被销毁...");
            //比如可以对ServletContext 数据进行处理,或者日志的管理...
            System.out.println("进行处理工作...");
        }
    }
    
  3. 配置web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
        <!--配置监听器-->
        <listener>
            <listener-class>com.listener.MyServletContextListener</listener-class>
        </listener>
    </web-app>
    
  4. 配置Tomcat

  5. 点击启动tomcat时,我们可以看到监听器被触发了:

    image-20221127172929861
  6. 点击停止tomcat时,可以看到监听器再一次被触发:

    image-20221127172702514

2.2ServletContextAttributeListener监听器

  1. 作用:监听ServletContext属性的变化
  2. 相关方法:
    • void attributeAdded(ServletContextAttributeEvent event):添加属性时调用
    • void attributeReplaced(ServletContextAttributeEvent event):替换属性时调用
    • void attributeRemoved(ServletContextAttributeEvent event):移除属性时调用

应用实例

  1. 创建监听器:MyServletContextAttributeListener
package com.listener;

import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;

public cl
首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇我的第一个项目(三):注册登陆功.. 下一篇SpringBoot(三):全局配置文件..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目