监听器
时间:2019-10-10
本文章向大家介绍监听器,主要包括监听器使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、监听域对象创建与销毁的监听器:
举例:ServletContextListener
(1)编写一个监听器去实现相应的接口并覆盖相应的方法:
package pers.zhb.test; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class ServletContextListenerDemo implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent servletContextEvent) { System.out.println("监听器创建了"); } @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { System.out.println("监听器销毁了"); } }
监听ServletContext域对象的创建与销毁:实现ServletContextListener 接口
监听HttpSession域对象的创建与销毁:实现HttpSessionListener 接口(在Session被创建的时候监听器被创建)
监听ServletRequest域对象的创建与销毁:实现ServletRequesttListener 接口
监听ServletContext域对象属性:实现ServletContextAttributeListener 接口
监听HttpSession域对象属性:实现HttpSessionAttributeListener 接口
监听ServletRequest域对象属性:实现ServletRequestAttributetListener 接口
(2)在web.xml文件中配置:
<listener> <listener-class>pers.zhb.test.ServletContextListenerDemo</listener-class> </listener>
即类的全路径。
(3)ServletContextListener 生命周期:服务器开启的时候创建,服务器关闭的时候销毁。
2、监听三大域对象的属性变化:
(1)创建Servlet对ServletContext的属性进行设置:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletContext context = this.getServletContext(); context.setAttribute("name", "zhai");//添加 context.setAttribute("name", "zhang");//修改 context.removeAttribute("name");//删除 }
(2)创建监听器检测属性的变化:
import javax.servlet.ServletContextAttributeEvent; import javax.servlet.ServletContextAttributeListener; public class ServletContextAttributeListenerDemo implements ServletContextAttributeListener { @Override public void attributeAdded(ServletContextAttributeEvent servletContextAttributeEvent) { System.out.print("添加:"+servletContextAttributeEvent.getName()); System.out.println(servletContextAttributeEvent.getValue()); } @Override public void attributeRemoved(ServletContextAttributeEvent servletContextAttributeEvent) { System.out.print("删除:"+servletContextAttributeEvent.getName()); System.out.println(servletContextAttributeEvent.getValue()); } @Override public void attributeReplaced(ServletContextAttributeEvent servletContextAttributeEvent) { System.out.print("修改"+servletContextAttributeEvent.getName()); System.out.println(servletContextAttributeEvent.getValue()); } }
(3)配置文件:
<listener> <listener-class>pers.zhb.test.ServletContextAttributeListenerDemo</listener-class> </listener> <servlet> <servlet-name>ServletContextAttributeListenerServlet</servlet-name> <servlet-class>pers.zhb.test.ServletContextAttributeListenerServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletContextAttributeListenerServlet</servlet-name> <url-pattern>/abc</url-pattern> </servlet-mapping>
4、被监听的对象的获取:
public class ServletContextListenerDemo implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent servletContextEvent) { ServletContext servletContext=servletContextEvent.getServletContext(); Object servletContext1=servletContextEvent.getSource(); }
第一种方法不需要强制转换。
原文地址:https://www.cnblogs.com/zhai1997/p/11650302.html
- 如何利用深度学习写诗歌(使用Python进行文本生成)
- 注意:字符串substring方法在jkd6,7,8中的差异。
- JavaWeb项目架构之NFS文件服务器
- 轻松几步搞定SSH连接Git配置
- 免费使用谷歌GPU资源训练自己的深度模型
- Git安装及配置5分钟快速教程
- 风格迁移原理及tensorflow实现-附代码
- 手把手教你搭建目标检测器-附代码
- JavaWeb项目架构之FastDFS分布式文件系统
- JavaWeb项目架构之Redis分布式日志队列
- 超快速!10分钟入门Keras指南
- Git操作常用的命令都在这里了。
- 网站性能测试指标(QPS,TPS,吞吐量,响应时间)详解
- day03.集群部署zookeeper【大数据教程】
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- React-Native Android打包
- React-Native iOS打包
- Webpack+Babel手把手带你搭建开发环境(内附配置文件)
- Redux 异步解决方案2. Redux-Saga中间件
- Redux异步解决方案 1. Redux-Thunk中间件
- 深度学习Pytorch检测实战 - Notes - 第1&2章 基础知识
- Java多线程编程在JMeter中应用
- Kubernetes 升级填坑指南(一)
- 根据 PID 获取 K8S Pod名称 - 反之 POD名称 获取 PID
- 用python实现一个verilog网表Parser
- 经典 | Python实例小挑战—Part eight
- python的数字与字符串相互转换
- 坑!url中含有中文导致nginx 400。锅是tomcat的
- pytest文档43-元数据使用(pytest-metadata)
- Python | 面试的常客,经典的生产消费者模式