• Servlet学习之Listener


    1.前言

    监听器是Servlet规范中的一员,就像Filter一样。在Servlet中所有的监听器接口都是以“Listener”结尾。

    而监听器的作用就是,给我们提供一个特殊的时机(比如session中放入参数时),而在这个特殊的时机如果我们想要做些什么的话,就要使用刀监听器了。

    2.监听器的种类

    jakarta.servlet包

    • ServletContextListener
    • ServletContextAttributeListener
    • ServletRequestListener
    • ServletRequestAttributeListener

    这几个类一眼就知道是监听Servlet域对象的数据变动的。

    jakarta.servlet.http包

    • HttpSessionListener
    • HttpSessionAttributeListener
      • 该监听器需要使用@WebListener注解进行标注。
      • 该监听器监听的是什么?是session域中数据的变化。只要数据变化,则执行相应的方法。主要监测点在session域对象上。
    • HttpSessionBindingListener
      • 该监听器不需要使用@WebListener进行标注。
      • 假设User类实现了该监听器,那么User对象在被放入session的时候触发bind事件,User对象从session中删除的时候,触发unbind事件。
      • 假设Customer类没有实现该监听器,那么Customer对象放入session或者从session删除的时候,不会触发bind和unbind事件。
    • HttpSessionIdListener
      • session的id发生改变的时候,监听器中的唯一一个方法就会被调用。
    • HttpSessionActivationListener
      • 监听session对象的钝化和活化的。
      • 钝化:session对象从内存存储到硬盘文件。
      • 活化:从硬盘文件把session恢复到内存。

    3.实现一个监听器

    这里我们以ServletContextListener为例:

    • 首先我们需要编写一个类实现ServletContextListener接口,并且实现里面的方法。

      • void contextInitialized(ServletContextEvent event)
        void contextDestroyed(ServletContextEvent event)
        
        • 1
        • 2
    • 其次在web.xml文件中对ServletContextListener进行配置,如下:

      • <listener>
            <listener-class>com.bjpowernode.javaweb.listener.MyServletContextListenerlistener-class>
        listener>
        
        • 1
        • 2
        • 3
  • 相关阅读:
    SpringBoot 中使用布隆过滤器 Guava、Redission实现
    Set和Multiset容器(C++)
    修改docker 版本的mysql 8.0 本机Navicat 连不上的问题
    陀螺仪工作原理
    vue中ref引用操作DOM元素
    重温FPGA开发36
    二叉树的基本概念与操作
    【计算机网络笔记】网络层服务模型——虚电路网络
    用3D扫描生成合成数据
    【LLM】金融大模型场景和大模型Lora微调实战
  • 原文地址:https://blog.csdn.net/qq_52002412/article/details/126256419