170817关于Listener的知识点
1. Listener 监听器简介
Listener是JavaWeb中三大组件之一。Servlet、Filter、Listener
三大组件都有的共同特点,都需要实现一个接口,并在web.xml文件配置。
2. JavaWeb中的监听器的监听对象是谁?
ServletContext
HttpSession
ServletRequest
3. 监听器分类
JavaWeb中的监听器共有三种,共8个监听器
生命周期监听器,监听三个对象的创建和销毁的事件。(3个)
属性监听器,监听三个对象中属性的变化。(3个)
session对象监听器,将它session中的属性,以及session的活化和钝化。(2个)
4.生命周期监听器:
ServletContextListener
ServletContext生命周期监听器
void contextDestroyed(ServletContextEvent sce)
该方法在ServletContext对象销毁前调用
void contextInitialized(ServletContextEvent sce)
该方法在ServletContext对象创建之后调用。
ServletContextEvent 对象可以获取到ServletContext对象
ServletContextEvent.getServletContext();

HttpSessionListener
HttpSession生命周期监听器
void sessionCreated(HttpSessionEvent se)
该方法在Session创建时调用
void sessionDestroyed(HttpSessionEvent se)
在session销毁时调用
HttpSessionEvent
可以获取HttpSession对象
ServletRequestListener
ServletRequest生命周期监听器
void requestDestroyed(ServletRequestEvent sre)
在request请求响应时调用
void requestInitialized(ServletRequestEvent sre)
在request请求开始时调用
ServletRequestEvent
可以获取ServletContext对象和ServletRequest

编写一个监听器的步骤:
1.创建一个类并实现一个接口。
2.在web.xml文件中注册监听器。
5. 属性监听器
属性监听器,监听三个域中的属性的变化:
添加一个属性,替换一个属性,移除一个属性
ServletContextAttributeListener
监听ServletContext中的属性的变化
void attributeAdded(ServletContextAttributeEvent scab)
当向ServletContext中添加属性时调用
attributeRemoved(ServletContextAttributeEvent scab)
移除属性时调用
attributeReplaced(ServletContextAttributeEvent scab)
替换一个属性时调用
HttpSessionAttributeListener
void attributeAdded(HttpSessionBindingEvent se)
void attributeRemoved(HttpSessionBindingEvent se)
void attributeReplaced(HttpSessionBindingEvent se)
HttpSessionBindingEvent
1.可以获取到属性名 getName()
2.可以获取属性的旧值 getValue()
3.可以获取到HttpSession对象 getSession();
(1)实现接口

(2)做运算

结果

(3)

结果

ServletRequestAttributeListener
void attributeAdded(ServletRequestAttributeEvent srae)
void attributeRemoved(ServletRequestAttributeEvent srae)
void attributeReplaced(ServletRequestAttributeEvent srae)
6. 监听session域中的属性的。
HttpSessionBindingListener
监听session域中某一个类的实例的添加和移除。
该接口由JavaBean来实现,不需要再web.xml文件配置
valueBound(HttpSessionBindingEvent event)
当该类的实例,作为属性设置进session域中时调用
valueUnbound(HttpSessionBindingEvent event)
当该类的实例,从session域中被移除时调用



7. HttpSessionActivationListener
监听session域中的某类属性,和session一起活化和钝化的事件。
该接口由JavaBean来实现,同样不需要再web.xml中配置,但是该JavaBean需要实现Serializable接口!
void sessionDidActivate(HttpSessionEvent se)
当前对象和session一起被活化到内存时调用
void sessionWillPassivate(HttpSessionEvent se)
当前对象和session一起钝化到硬盘时调用




活化后:


170817关于Listener的知识点的更多相关文章
- servlet filter listener interceptor 知识点
这篇文章主要介绍 servlet filter listener interceptor 之 知识点.博文主要从 概念,生命周期,使命介绍其区别.详情如下: 概念 生命周期 使命 servlet ...
- 170817关于AJAX的知识点
1.AJAX [1] AJAX简介 全称: Asynchronous JavaScript And XML ...
- SpringBoot系列教程web篇Listener四种注册姿势
java web三要素Filter, Servlet前面分别进行了介绍,接下来我们看一下Listener的相关知识点,本篇博文主要内容为SpringBoot环境下,如何自定义Listener并注册到s ...
- 170817关于JSON知识点
1. JSON [1] JSON简介 JSON全称 JavaScript Object Notation ...
- 程序员必懂:javaweb三大框架知识点总结
原文链接:http://www.cnblogs.com/SXTkaifa/p/5968631.html javaweb三大框架知识点总结 一.Struts2的总结 1.Struts 2的工作流程,从请 ...
- Spring MVC知识点整理
网上Spring MVC相关知识点的介绍已经有很多了,但是大部分文章都是介绍其中的一部分知识点. 本文希望能够向读者做一个基本整体的介绍,首先我们先来了解下Spring MVC的基础接口和组件. ...
- 史上前端面试最全知识点(附答案)---html & js & css
史上前端面试最全知识点(附答案) 一.html & js & css 1.AMD和CMD是什么?它们的区别有哪些? AMD和CMD是二种模块定义规范.现在都使用模块化编程,AMD,异步 ...
- 剑指Offer——知识点储备-J2EE基础
剑指Offer--知识点储备-J2EE基础 9.2 jdk 1.8的新特性(核心是Lambda 表达式) 参考链接:http://www.bubuko.com/infodetail-690646.ht ...
- 10分钟详解Spring全家桶7大知识点
Spring框架自2002年诞生以来一直备受开发者青睐,它包括SpringMVC.SpringBoot.Spring Cloud.Spring Cloud Dataflow等解决方案.有人亲切的称之为 ...
随机推荐
- C语言中,当计算字符数组长度时,用sizeof 和strlen 的原理及两者的区别
字符数组的长度计算:必须以终止符’\0'作为边界,但对字符数组赋值时,有两种方式: 1:定义时用字符初始化 (1)char chs[7] = {'a', 'c', '0', 'z', '3','d'} ...
- 取(2堆)石子游戏 HDU 2177 博弈论
取(2堆)石子游戏 HDU 2177 博弈论 题意 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中 ...
- P1536村村通
这是一个并查集的题,被洛谷评为提高—. 拿到这个题便看出了这是一个裸的并查集,于是就写了一个模板,结果发现连输入都输不进去,一看竟然是多组数据,,然后看到N==0结束,于是便加了一层while.之后提 ...
- pistat 查看进程状态
该pidstat命令用于监视当前正在由Linux内核管理的各个任务.对于使用选项-p选择的每个任务,或者如果使用了选项-p ALL,则它将写入Linux内核管理的 每个任务的标准输出活动.不选择任何任 ...
- redis进阶知识
原文地址:https://my.oschina.net/u/4052893/blog/3001173 一.缓存雪崩 1.1什么是缓存雪崩? 回顾一下我们为什么要用缓存(Redis): 现在有个问题,如 ...
- 基于gulp的前端自动化方案
前言 最近几年前端技术发展日新月异,特别是单页应用的普及.组件化.工程化.自动化成了前端发展的趋势.webpack已经成为了前端打包构建的主流,但是一些老古董的项目还是存在的,也有优化的必要,正好 ...
- Windows消息理解(系统消息队列,进程消息队列,非队列消息)
// ====================Windows消息分类==========================在Windows中,消息分为以下三类:标准消息——除WM_COMMAND之外,所 ...
- TCP/IP四层协议
1.数据链路层 数据链路层实现了网卡接口的网络驱动程序,处理数据在物理媒介(以太网,令牌环)上的传输,常用协议包含ARP(地址解析协议),RARP(逆地址解析协议)两个协议,他们实现了IP地址和物理地 ...
- Cross-Origin-Resource-Sharing-Solutions
from:https://github.com/hijiangtao/hijiangtao.github.io/blob/master/_posts/2017-06-13-Cross-Origin-R ...
- window下lamp环境搭建
软件: apache_2.2.25.msi php-5.4.30-Win32-VC9-x86.zip mysql-5.6.11-win32.msi下载地址:http://download.csdn.n ...