创建测试页面testattribute.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<html>
<head>
<title>测试域对象属性变更事件监听器</title>
</head>
<body><h3>这是一个测试域对象属性变更事件监听器的页面</h3><%getServletContext().setAttribute("username", "itcast");getServletContext().setAttribute("username", "itheima");getServletContext().removeAttribute("username");session.setAttribute("username", "itcast");session.setAttribute("username", "itheima");session.removeAttribute("username");request.setAttribute("username", "itcast");request.setAttribute("username", "itheima");request.removeAttribute("username");%>
</body>
</html>

创建监听器MyAttributeListener

public class MyAttributeListener implements ServletContextAttributeListener,HttpSessionAttributeListener, ServletRequestAttributeListener {public void attributeAdded(ServletContextAttributeEvent sae) {String name = sae.getName();System.out.println("ServletContext添加属性:" + name + "="+ sae.getServletContext().getAttribute(name));}public void attributeRemoved(ServletContextAttributeEvent sae) {String name = sae.getName();System.out.println("ServletContext移除属性: " + name);}public void attributeReplaced(ServletContextAttributeEvent sae) {String name = sae.getName();System.out.println("ServletContext替换属性:" + name + "="+ sae.getServletContext().getAttribute(name));}public void attributeAdded(HttpSessionBindingEvent hbe) {String name = hbe.getName();System.out.println("HttpSession添加属性:" + name + "="+ hbe.getSession().getAttribute(name));}public void attributeRemoved(HttpSessionBindingEvent hbe) {String name = hbe.getName();System.out.println("HttpSession移除属性: " + name);}public void attributeReplaced(HttpSessionBindingEvent hbe) {String name = hbe.getName();System.out.println("HttpSession替换属性:" + name + "="+ hbe.getSession().getAttribute(name));}public void attributeAdded(ServletRequestAttributeEvent sra) {String name = sra.getName();System.out.println("ServletRequest添加属性:" + name + "="+ sra.getServletRequest().getAttribute(name));}public void attributeRemoved(ServletRequestAttributeEvent sra) {String name = sra.getName();System.out.println("ServletRequest移除属性: " + name);}public void attributeReplaced(ServletRequestAttributeEvent sra) {String name = sra.getName();System.out.println("ServletRequest替换属性:" + name + "="+ sra.getServletRequest().getAttribute(name));}
}

web.xml中配置监听器

  <listener><listener-class>cn.itcast.chapter08.listener.MyAttributeListener</listener-class></listener>

启动Tomcat,测试

案例:监听域对象的属性变更相关推荐

  1. 案例:监听域对象的生命周期

    任务目标 实现监听ServletContext HttpSession ServletRequest这三个域对象的生命周期 创建监听器MyListener public class MyListene ...

  2. 09_Filter过滤器(访问所有资源前,首先执行自定义过滤器类的doFilter方法)_Listener监听器(监听域对象的改变)

    Filter 什么是Web过滤器? 如何使用Filter过滤器? 自定义Filter类的生命周期 过滤器可以拦截哪些资源路径? 拦截方式配置:资源被访问的方式 过滤器链的默认执行顺序是什么? 如何配置 ...

  3. [原创]java WEB学习笔记48:其他的Servlet 监听器:域对象中属性的变更的事件监听器 (3 个),感知 Session 绑定的事件监听器(2个)...

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  4. ios 监听一个控制器的属性_OC观察者模式之KVO的使用与思考

    原标题:OC观察者模式之KVO的使用与思考 无论用哪种语言进行软件开发,我们都会接触到设计模式,个人认为设计模式存在的意义在于:在某些需求下,采用适合的设计模式,使代码结构合理,从而提高代码的可读性. ...

  5. ios 监听一个控制器的属性_ios - kvo观察者示例(监听类的属性变化)

    首先创建Person分类 #import @interface Person : NSObject @property (nonatomic, copy) NSString *name; @prope ...

  6. JavaWeb_域对象的属性操作

    JavaWeb_域对象的属性操作 和属性相关的方法: 1)方法 Object getAttribute(String name):获取指定的属性 Enumeration getAttributeNam ...

  7. Vue使用watch监听一个对象中的属性

    问题描述 Vue提供了一个watch方法可以让使用者去监听某些data内的数据变动,触发相应的方法,比如 queryData: {name: '',creator: '',selectedStatus ...

  8. vue点击改变data_vue实现响应式原理即vue如何监听data的每个属性的变化

    记住两点 1.使用 Object.defineProprety实现响应式原理 2. data属性代理到vm(即是Vue实例)上 Object.defineProperty 是如何使用的? Object ...

  9. ios 监听一个控制器的属性_iOS 事件(UITouch、UIControl、UIGestureRecognizer)传递机制

    gitHub地址 : 响应链Demo 文章有点长,如果只是想了解大概过程的,可以直接看后面的总结 一.触摸.事件.响应者 1. UITouch源起触摸一个手指一次触摸屏幕,就对应生成一个UITouch ...

最新文章

  1. python 将指定路径(目录)下的图片或文本文件按给定序号重新排序,并批量重命名 (yolo、tensorflow数据集批量处理)
  2. 由web程序出现乱码开始挖掘(Bom头、字符集与乱码)
  3. oracle里面如何查询sqlid,Oracle SQL查询:如何使用count
  4. 如果访问设备屏幕宽度小于1024,跳转到移动端
  5. json转xml、xml转json
  6. Tomcat创建Servlet容器
  7. win10系统文件拖拽卡顿_如何解决Win10鼠标拖动窗口有延迟?
  8. beyong Compare4解决30天的评估期结束
  9. 各种排序算法耗时比较
  10. 招商银行信用卡中心笔试编程题 - 序列找数
  11. 北航计算机刘强,刘强 LIU Qiang
  12. 7z文件压缩、解压 (7zTool.exe)
  13. pytorch实战(四)——模型的保存与读取
  14. 计算机上的网络适配器,电脑的网络适配器是什么意思?
  15. Python学习手册--第二部分(数据类型)
  16. linux新建ftp共享文件夹,共享文件的访问和ftp的创建
  17. vertrigoserv mysql 密码_VertrigoServ-官方版-VertrigoServ(网络开发环境)2.37官方版-独木成林...
  18. 大神教你uefi启动安装win7操作方法
  19. Ubuntu 20.04从安装到配置全套避坑指南
  20. 高通骁龙wear4100怎么样 相当于骁龙多少

热门文章

  1. 从H264/H265码流中获取宽、高及帧率
  2. 在vue项目中 如何定义全局变量 全局函数
  3. Java操作itext,寻找给定关键字,并且进行页面抽取和页面盖章两个操作
  4. android webview 太大,Android应用开发之Android WebView加载图片显示过大的处理教程(代码教程)...
  5. 【java】理解和运用Java中的Lambda
  6. 【算法】图的基本介绍 以及 存储方式
  7. 【Elasticsearch】 es nested 嵌套类型 详解
  8. 1.1.0-简介-P5-时间、时钟和事件顺序
  9. 【Nacos】Nacos MySQL 配置 启动报错 ould not create connection to database server. Attempted reconnect 3 time
  10. 【Es】es deep paging问题