Listener随笔
[1]监听器简介
> Listener是JavaWeb中三大组件之一。Servlet、Filter、Listener
> 三大组件都有的共同特点,都需要实现一个接口,并在web.xml文件配置。
监听器:朝阳群众
监听对象:明星
监听的事件:干坏事
调用方法:报警
> JavaWeb中的监听器的监听对象是谁?
ServletContext
HttpSession
ServletRequest
[2]监听器分类
> JavaWeb中的监听器共有三种,共8个监听器
- 生命周期监听器,监听三个对象的创建和销毁的事件。
- 属性监听器,监听三个对象中属性的变化。
- session对象监听器,将它session中的属性,以及session的活化和钝化。
[3]生命周期监听器
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
- void requestDestroyed(ServletRequestEvent sre)
- 在request对象销毁时调用
- void requestInitialized(ServletRequestEvent sre)
- 在request对象创建时调用
- ServletRequestEvent
可以获取ServletContext对象和ServletRequest
编写一个监听器的步骤:
1.创建一个类并实现一个接口。
2.在web.xml文件中注册监听器。
[4]属性监听器
> 属性监听器,监听三个域中的属性的变化:添加一个属性,替换一个属性,移除一个属性
> 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();
> ServletRequestAttributeListener
void attributeAdded(ServletRequestAttributeEvent srae)
void attributeRemoved(ServletRequestAttributeEvent srae)
void attributeReplaced(ServletRequestAttributeEvent srae)
> 以下两个监听器监听session域中的属性的。
1 HttpSessionBindingListener
> 监听session域中某一个类的实例的添加和移除。
> 该接口由JavaBean来实现,不需要再web.xml文件配置
valueBound(HttpSessionBindingEvent event)
- 当该类的实例,作为属性设置进session域中时调用
valueUnbound(HttpSessionBindingEvent event)
- 当该类的实例,从session域中被移除时调用
2 HttpSessionActivationListener
> 监听session域中的某类属性,和session一起活化和钝化的事件。
> 该接口由JavaBean来实现,同样不需要再web.xml中配置
void sessionDidActivate(HttpSessionEvent se)
- 当前对象和session一起被活化到内存时调用
void sessionWillPassivate(HttpSessionEvent se)
- 当前对象和session一起钝化到硬盘时调用
Listener随笔的更多相关文章
- FineUIMvc随笔 - 动态创建表格列
声明:FineUIMvc(基础版)是免费软件,本系列文章适用于基础版. 用户需求 用户希望实现动态创建表格列,在 WebForms 中,我们通过在 Page_Init 中创建列来实现: 但是在 MVC ...
- FineUIMvc随笔(4)自定义回发参数与自定义回发
声明:FineUIMvc(基础版)是免费软件,本系列文章适用于基础版. 不能忘却的回发 在上一篇文章中,我们对FineUIMvc中的回发进行了详细描述,目的是为了告诉大家: 1. FineUIMvc中 ...
- FineUIMvc随笔(1)动态创建表格列
声明:FineUIMvc(基础版)是免费软件,本系列文章适用于基础版. <FineUIMvc随笔>目录 FineUIMvc随笔(1)动态创建表格列 FineUIMvc随笔(2)怎样在控件中 ...
- 解决android sdk 运行出现 could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037:的问题
ionic3项目,在添加android平台后,cordova run android 出现 以下问题: error: could not install *smartsocket* listener: ...
- FineUIMvc随笔(7)扩展通知对话框(显示多个不重叠)
声明:FineUIMvc(基础版)是免费软件,本系列文章适用于基础版. 这篇文章我们将改造 FineUIMvc 默认的通知对话框,使得同时显示多个也不会重叠.并提前出一个公共的JS文件,供大家使用. ...
- JavaWeb随笔整理
JavaWeb随笔整理 为方便阅读,故整理了相关学习笔记 前端相关 HTML CSS JavaScript BootStrap 数据库相关 MySQL基础 MySQL表的约束和数据库设计 MySQL多 ...
- AI人工智能系列随笔
初探 AI人工智能系列随笔:syntaxnet 初探(1)
- 【置顶】CoreCLR系列随笔
CoreCLR配置系列 在Windows上编译和调试CoreCLR GC探索系列 C++随笔:.NET CoreCLR之GC探索(1) C++随笔:.NET CoreCLR之GC探索(2) C++随笔 ...
- C++随笔:.NET CoreCLR之GC探索(4)
今天继续来 带大家讲解CoreCLR之GC,首先我们继续看这个GCSample,这篇文章是上一篇文章的继续,如果有不清楚的,还请翻到我写的上一篇随笔.下面我们继续: // Initialize fre ...
随机推荐
- azkaban工作流调度器及相关工具对比
本文转载自:工作流调度器azkaban,主要用于架构选型,安装请参考:Azkaban安装与简介,azkaban的简单使用 为什么需要工作流调度系统 一个完整的数据分析系统通常都是由大量任务单元组成: ...
- drf框架之跨域问题的解决与缓存问题
什么是跨域问题呢: 1. 跨域问题: CORS 跨域资源共享: 有简单请求 和非简单请求 简单请求: 只要符合如下两条,就是简单请求,否则则是非简单请求 (1) 请求方法是以下三种方法之一: HEAD ...
- nltk-贝叶斯分类器
本人小白一枚,专业统计,之前做过质量工程,现转行将近一年,开始记录我的学习过程及踩过的坑. 第一篇:用贝叶斯分类器(本文使用NLTK中的NaiveBayesClassifier)将5000多个样本进行 ...
- C++的ch1&ch2的整理
C++:带泪的C,意指学C语言的时候没有好好学,在学习此门课时会流下不学无术的泪水(仅对于我个人). 计算机程序语言的发展:机器语言[计算机可以识别的二进制指令]——>汇编语言[将机器指令转化为 ...
- cookie和session的区别及在Django中应用
Django中Cookie和session应用 什么是cookie? cookie是客户端浏览器上的一个文件,以键值对进行保存,类似于字典的 {'key' : 'value'} ,与服务器端没有关系, ...
- 计算系统中互联设备Survey
Survey of Inter-connects in computer system 姚伟峰 http://www.cnblogs.com/Matrix_Yao/ https://github.co ...
- python学习Day14 带参装饰器、可迭代对象、迭代器对象、for 迭代器工作原理、枚举对象、生成器
复习 函数的嵌套定义:在函数内部定义另一个函数 闭包:被嵌套的函数 -- 1.外层通过形参给内层函数传参 -- 2.返回内部函数对象----> 延迟执行, 开放封闭原则: 功能可以拓展,但源代 ...
- .net WCF简单练习
之前一直没接触过WCF这个东西,由于是初学WCF没有深入研究其原理,只是写了一个demo WCF服务用于两个不同项目中的调用,在这里我举例项目A调用WCF服务实现查询数据功能. 第一步:创建数据库,有 ...
- 基于WebGL架构的3D可视化平台—新风系统演示
新风系统是根据在密闭的室内一侧用专用设备向室内送新风,再从另一侧由专用设备向室外排出,在室内会形成“新风流动场”,从而满足室内新风换气的需要.实施方案是:采用高风压.大流量风机.依靠机械强力由一侧向室 ...
- 基于DPDK的高效包处理系统
一.概念 Intel® DPDK全称Intel Data Plane Development Kit,是intel提供的数据平面开发工具集,为Intel architecture(IA)处理器架构下用 ...