JavaWeb监听器Listener

简介: JavaWeb监听器Listener

Listener 监听器介绍


  Listener 监听器是 JavaWeb 三大组件之一。JavaWeb 的三大组件分别是:Servlet 程 序、Listener 监听器、Filter 过滤器。


       监听器是用于监听某种变化(对象创建/销毁, 增删改等等属性变化),某个变化都有自己对应的调用方法。


       继承对应监听器的接口并重写方法,就可以使用监听器完成自己想要的功能,方法的实现功能由程序员决定。


JavaWeb 的监听器


ServletContextListener 监听(比较常用)


    作用:监听 ServletContext 创建或销毁( Web 应用启动时,会自动创建 ServletContext), 即生命周期监听。例如:加载初始化的配置文件。


ServletContextListener 监听 方法


   void contextInitialized(ServletContextEvent servletContextEvent) 监听Servletcontext 被创建行为


       void contextDestroyed(ServletContextEvent servletContextEvent) 监听Servletcontex被销毁 行为


ServletContextAttributeListener 监听器


       作用:监听 ServletContext 属性变化


ServletContextAttributeListener 监听方法


       void attributeAdded(ServletContextAttributeEvent event) 添加属性

       void attributeReplaced(ServletContextAttributeEvent event) 替换属性

      void attributeRemoved(ServletContextAttributeEvent event) 移除属性

public class MyServletContextAttributeListener implements ServletContextAttributeListener {
    @Override
    public void attributeAdded(ServletContextAttributeEvent               servletContextAttributeEvent) {
        System.out.println("添加了 servletContext 属性名= "                +servletContextAttributeEvent.getName() + " 属 性 值 =" +
        servletContextAttributeEvent.getValue());
    }
    @Override
    public void attributeRemoved(ServletContextAttributeEvent     servletContextAttributeEvent)
    {
        System.out.println("删除了 servletContext 属性");
    }
    @Override
    public void attributeReplaced(ServletContextAttributeEvent     servletContextAttributeEvent)
    {
        System.out.println("替换了 servletContext 属性 ");
    }
}


HttpSessionListener 监听器


 作用:监听 Session 创建或销毁,即生命周期监听(和ServletContextListener 监听一样,只是监听对象不同)。

public class MyHttpSessionListener implements  HttpSessionListener {
    @Override
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
        System.out.println("SessionEvent 创建,完成 WEB 初始化的工作..");
    }
    @Override
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
        System.out.println("SessionEvent 销毁..");
    }
}


HttpSessionAttributeListener 监听器


   作用:监听 Session 属性的变化


HttpSessionAttributeListener 监听器方法


       void attributeAdded(ServletRequestAttributeEvent srae) 添加属性


       void attributeReplaced(ServletRequestAttributeEvent srae) 替换属性


       void attributeRemoved(ServletRequestAttributeEvent srae) 移除属性


ServletRequestListener 监听


作用:监听 Request 创建或销毁,即 Request 生命周期监听。


ServletRequestListener 监听方法(和前面差不多,只是对象的区别):


       void requestInitialized(ServletRequestEvent sre) 创建 request


       void requestDestroyed(ServletRequestEvent sre) 销毁 request


个人理解,如有错误,欢迎指教,谢谢。

相关文章
|
2月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
377 37
|
30天前
|
前端开发 Java 应用服务中间件
Javaweb学习
【10月更文挑战第1天】Javaweb学习
30 2
|
1月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
45 5
|
1月前
|
分布式计算 Java Hadoop
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
61 1
|
2月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
2月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
94 2
|
1月前
|
Java C#
Java的监听处理事件--小球移动案例
Java的监听处理事件--小球移动案例
12 0
|
2月前
|
SQL JSON JavaScript
JavaWeb基础9——VUE,Element&整合Javaweb的商品管理系统
Vue 指令、生命周期、this和$、vue脚手架进行模块化开发/ElementUI框架、综合案例,element商品列表展示增删改查
JavaWeb基础9——VUE,Element&整合Javaweb的商品管理系统
|
2天前
|
安全 Java 测试技术
Java并行流陷阱:为什么指定线程池可能是个坏主意
本文探讨了Java并行流的使用陷阱,尤其是指定线程池的问题。文章分析了并行流的设计思想,指出了指定线程池的弊端,并提供了使用CompletableFuture等替代方案。同时,介绍了Parallel Collector库在处理阻塞任务时的优势和特点。
|
11天前
|
安全 Java
java 中 i++ 到底是否线程安全?
本文通过实例探讨了 `i++` 在多线程环境下的线程安全性问题。首先,使用 100 个线程分别执行 10000 次 `i++` 操作,发现最终结果小于预期的 1000000,证明 `i++` 是线程不安全的。接着,介绍了两种解决方法:使用 `synchronized` 关键字加锁和使用 `AtomicInteger` 类。其中,`AtomicInteger` 通过 `CAS` 操作实现了高效的线程安全。最后,通过分析字节码和源码,解释了 `i++` 为何线程不安全以及 `AtomicInteger` 如何保证线程安全。
java 中 i++ 到底是否线程安全?
下一篇
无影云桌面