java ee监听器编程,java EE开发之Servlet第四课:监听器(Listener)

1.什么是Listener

监听器就像老板的秘书,那个秘书就是活的监听器,时时监听着老板,当老板发生一些事情的时候,秘书就会有相应的措施。比如老板口渴了,秘书就会去端茶;比如老板要提提神,秘书就会泡一杯咖啡等。

2.介绍java的几种常用的监听器

(1)实现ServletRequestListener接口,监听request(需要在web.xml中配置)

/**

* 当request对象被销毁的时候,容器就会自动去

* 调用这个监听器的requestDestroyed,产生一个事件对象ServletRequestEvent

*/

public void requestDestroyed(ServletRequestEvent sre) {

System.out.println("request被销毁");

}

/**

* 当request对象被创建的时候,容器就会自动去

* 调用这个监听器的requestInitialized,产生一个事件对象ServletRequestEvent*/

public void requestInitialized(ServletRequestEvent sre) {

System.out.println("request被创建");

}

配置:

com.accp.RequestListener

(2)实现HttpSessionListener接口,监听session (需要在web.xml中配置)

/**

* 当session被创建的时候被调用,产生一个事件对象HttpSessionEvent*/

public void sessionCreated(HttpSessionEvent se) {  }

/**

* 当session被销毁的时候被调用,产生一个事件对象HttpSessionEvent */

public void sessionCreated(HttpSessionEvent se) {  }

配置:

com.accp.SessiontListener

(3)实现ServletContextListener接口,监听ServletContext(需要在web.xml中配置)

/**

* 当ServletContext被销毁的时候,容器就会自动去

* 调用这个监听器的contextDestroyed,产生一个事件对象ServletContextEvent

*/

public void contextDestroyed(ServletContextEvent sce) {  }

/**

* 当ServletContext被创建的时候,容器就会自动去

* 调用这个监听器的contextDestroyed,产生一个事件对象ServletContextEvent*/

public void contextInitialized(ServletContextEvent sce) {  }

配置:

com.accp.ContextListener

(4)实现SessionBindingListener接口,监听Session设值和取值(不需要在web.xml中配置)

/**

* 当向Session里面设值的时候,容器调用此方法,生产一个事件对象  */

public void valueBound(HttpSessionBindingEvent event) {   }

/**

* 当向Session里面移除值的时候,容器调用此方法,生产一个事件对象  */

public void valueUnbound(HttpSessionBindingEvent event) {  }

哪个类的对象需要监听,就让那个类实现该接口

3.应用

应用一

使用 ServletRequestListener ,HttpSessionListener , ServletContextListener

统计访问量,在线人数,请求次数

应用二

使用SessionBindingListener做购物车:

HttpSessionBindingListener只监听制定的session

HttpSessionListener:监听处理所有的session

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306931.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

System.Text.Json中时间格式化

转自:Rayomcnblogs.com/Rayom/p/13967415.html简介.Net Core 3.0开始全新推出了一个名为System.Text.Json的Json解析库,用于序列化和反序列化Json,此库的设计是为了取代Json.Net(Newtonsoft.Json)时间格式化的不足System.Text.Json的优点就不…

windows server 启用 vss_windows服务器常用的安全加固方法

Windows操作系统本身已经提供了多种安全机制,如标识与鉴别、访问控制、用户账户控制、安全审计、文件系统。但是,这并不意味着操作系统就固若金汤。事实上,任何一个Windows版本都或多或少的存在着漏洞,而且在不断的被挖掘出来。Wi…

说说 C# 9 新特性的实际运用

前言你一定会好奇:“老周,你去哪开飞机了?这么久没写博客了。”老周:“我买不起飞机,开了个铁矿,挖了一年半的石头。谁知铁矿垮了,压死了几条蜈蚣,什么也没挖着。”所以,…

thinkpad笔记本散热风扇_十代酷睿笔记本低至2999元 你可以入手了_笔记本新闻

这年头3000元能干什么?买一套化妆品还是一套乐高积木?现在很严肃地告诉你,可以买一台笔记本,而且是搭载英特尔第十代酷睿处理器的轻薄笔记本——联想ThinkPad 翼14 Slim。联想ThinkPad 翼14 Slim轻薄笔记本其搭载了英特尔十代酷睿…

matlab对数据插值增加数据,matlab数据插值与拟合方法

晚上做一个曲线拟合,结果才开始用最小二乘法拟合时,拟合出来的东西太难看了!于是尝试用其他方法。经过一番按图索骥,终于发现做曲线拟合的话,采用插值法是比较理想的方法。尤其是样条插值,插完后线条十分光…

BenchmarkDotNet v0.12x新增功能

起因在看.Net 官方博客 .Net 5性能优化 中,发现测试性能的BenchmarkDotNet版本已经是v0.12.1,然后去看BenchmarkDotNet文档,发现还是有不少新的特性.v0.12.0支持多个运行时(API改进),增加对.Net 5支持支持DotNet创建BenchmarkDotNet项目(项目模版)增加NativeMemoryProfiler(目前…

邮箱通知php,PHPMailer 发送邮件(含详细介绍及使用方法说明)

上篇文章PHP mail()方法发送邮件部分邮箱无法收到邮件问题提到要介绍一下phpmailer这款免费开源的php 邮件程序,下面我们来看看吧,以下资料全部来自phpmailer官方网站:PHPMailer 也是一个功能强大的邮件类PHPMailer的主要功能特点&#xff1a…

centos amd双显卡_PCIe4.0和PCIe3.0对显卡性能差别大吗?

众所周知,AMD X570、B550主板,包括RX3000系列显卡,率先支持了PCIe 4.0协议,高达32GB/s带宽,相比现在的PCIe3.0带宽足足翻了一倍,也是AMD新平台一大卖点,然而intel却无动于衷,并各种表…

我画着图,FluentAPI 她自己就生成了

在 Newbe.ObjectVistor 0.3 版本中我们非常兴奋的引入了一个紧张刺激的新特性:使用状态图来生成任意给定的 FluentAPI 设计。开篇摘要 在非常多优秀的框架中都存在一部分 FluentAPI 的设计。这种 API 设计更加符合人类自言语言描述。使得代码更加具备可读性。在 New…

python的基础知识可以应用到哪方面-Python基础知识

python基础 python的诞生 2002年,python 2.x 2008年,python 3.x python的命名 马戏团的名称 python简介 简单、易学 持快速开发. 跨平台. 开源. 可扩展. 可嵌入. 大量的标准库和活跃的交流群. 可用于各种各样的开发. 应用领域 系统编程 提供API&#xff…

java爬虫基础知识,Java网络爬虫基础知识

引言Java 网络爬虫具备很好的扩展性可伸缩性,其是目前搜索引擎开发的重要组成部分。例如,著名的网络爬虫工具 Nutch 便是采使用 Java 开发,该工具以 Apache Hadoop 数据结构为依托,提供了良好的批解决支持。Java 网络爬虫涉及到 J…

.NET5都来了,你还不知道怎么部署到linux?最全部署方案,总有一款适合你

随着2020进入4季度,.NET5正式版也已经与大家见面了。不过,尽管 .NET Core发布已经有四五年的时间,但到目前为止,依旧有很多.NET开发者在坚守者.NET4,原因不尽相同,但最大的问题可能还是不熟悉Linux&#xf…

好用的平板电脑_平板选择华为M6,这里有几点建议

大家好,我是师兄。平板几乎已经成大学生生活中必备的物品之一了,现在的学生实在是太会享受了。作为华为M6的重度使用用户,在这里给大家在购买华为平板M6时提几点建议。1.质量挺好的,品制有保证购买华为平板M6已经半年了&#xff0…

读取oracle bfile字段,ORACLE中BFILE字段的使用研究_oracle

因为做项目,需要使用BFILE字段存储图像文件,所以进行了一些研究。bfile字段实际的文件存储在文件系统中,字段中存储的是文件定位指针.bfile对oracle来说是只读的,也不参与事务性控制和数据恢复bfile的基本操作如下:1.先在oracle数据库中下面我…

客户的一个紧急bug,我用了两种方式进行 C# 反编译修改源码

一:背景 1. 讲故事周五下午运营反馈了一个紧急bug,说客户那边一个信息列表打不开,急需解决,附带的日志文件也发过来了,看了下日志大概是这样的:日期:2020-11-13 12:25:45,923 线程ID:[3924] 日志级别:INFO …

离线语音识别软件_从音乐识别软件起家,这家公司如何备战车载AI语音市场GGAI对话...

加入高工智能汽车专业行业群(自动驾驶5群,车联网智能座舱3群,智能网联商用车2群),加微信:17157613659,出示名片,仅限智能网联汽车软硬件供应商及OEM厂商。早在2016年,亚马逊推出的语音助手Alexa…

int函数在Oracle,vb中int是什么意思 ?

VB语言中int函数的意思是取整数。即:int(x)函数是取不大于x的最大整数。例如:1、int(4.88)4int(4.88)即是取一个不大于4.88且最接近4.88的整数,所以int(4.88)4。2、int(8.1)8int(8.1)即是取一个不大于8.1且最接近8的整数,所以int(…

.NET 5 中的隐藏特性

转自:hez2010cnblogs.com/hez2010/p/13963803.html前言双十一当天,个人觉得非常香,并且花了 10 分钟时间就把自己的 4 个 .NET Core 3.1 的项目升级到了 .NET 5,堪称无痛。但是,.NET 5 中还有一些没有正式公开的隐藏特…

windows如何添加本机dns记录_运维必看!超清晰的 DNS 原理入门指南

来源:阮一峰的网络日志作者:阮一峰链接:http://www.ruanyifeng.com/blog/2016/06/dns.htmlDNS 是互联网核心协议之一。不管是上网浏览,还是编程开发,都需要了解一点它的知识。本文详细介绍DNS的原理,以及如…

linux oracle流复制,oracle 流复制

测试环境:oracle linux 虚拟机192.168.1.4,192.168.1.5oracle 10.2.0.3alter system set global_namestrue scopeboth;show parameter COMPATIBLEshow parameter jobalter system set streams_pool_size15 scopememory;[more]归档日志模式GRANT DBA TO strmadmin IDENTIFIED BY…