web监听器

web监听器的定义;

web监听器是servlet规范中定义的一种特殊类;

用于监听servletContext(application) 、 HttpSession (session)、ServeletRequest (request)等域对象的创建与销毁事件;

WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。

  ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。  由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。

在Servlet API中有一个ServletContextListener接口,它能够监听ServletContext对象的生命周期,实际上就是监听Web应用的生命周期。

可以在事件发生前、发生后做一些必要的处理;用于监听域对象的属性发生修改的事件;

web监听器的用途;

1.统计在线人数和在线用户;

2.系统启动时加载初始化信息;

3.统计网站访问量;

4.跟SPring结合;

第一个web监听器;

步骤:1.创建一个实现监听器接口的类;2.配置web.xml 进行注册;(点击desgin)然后选中Lister,之后把实现的类路径选中,就好了

 按监听的对象划分:

1.用于监听应用程序环境对象(ServletContext)的事件监听器;

2.用于监听用户会话对象(HttpSession)的事件监听器;

3.用于监听请求消息对象(ServletRequset)的事件监听器;

按监听的事件划分:

1.监听域对象自身的创建和销毁的事件监听器;

2.监听域对象的属性的增加和删除监听器;

3.监听绑定到HttpSession域的某个对象的事件监听器;

监听域对象自身的创建和销毁的事件监听器;

在servlet规范中呢,定义了三个接口,分别是ServletContextListener HttpSessionLister ,ServletRequestLister来监听ServletContext,HttpSession,ServletRequset

对象的创建和销毁;

1.ServletContext的创建和销毁:

ServletContext实现了ServletContextListener 这个接口;来监听这个对象的创建和销毁;

ServletContextListener 有两个方法:

public void contextInitialized(ServletContextEvent sce)

ServletContext创建时调用;

public vod contextDestoryed(ServletContextEvent sce)

ServletContext销毁时调用;

事例代码:

public class MyServletContextListener implements ServletContextListener {@Overridepublic void contextDestroyed(ServletContextEvent arg0) {System.out.println("contextDestroyed");}@Overridepublic void contextInitialized(ServletContextEvent arg0) {System.out.println("contextInitialized");}}
View Code

2.HttpSession的对象创建与销毁;

HttpSession实现了HttpSessionLister 这个接口;来监听这个对象的创建和销毁;

HttpSessionLister有两个方法:

public void sessionCreated(HttpSessionEvent sce)

Session创建时调用;

public vod sessionDestroyed(((HttpSessionEvent sce);

Session销毁时调用; 用途:统计访问人数;记录访问日志;

session创建的时间,当用户打开浏览器,第一次访问我们的网站的时候,这个时候,session对象就会被创建;可以在session保存一些信息;

销毁session对象:有三种方法;1.手动的点击退出的时候,程序会去调用销毁的方法,2,当关闭浏览器的时候,session对象也会被销毁。3,没有关闭浏览器,

但是会话超时了,这个时候session对象也会被销毁;

我们可以在web.xml中配置

<session-config><time-out>1</time-out>
</session-config>
View Code

事例代码:

package com.imooc.listener;import java.util.ArrayList;import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;import com.imooc.entity.User;
import com.imooc.util.SessionUtil;
@WebListener
public class MyHttpSessionListener implements HttpSessionListener {private int userNumber = 0;@Overridepublic void sessionCreated(HttpSessionEvent arg0) {userNumber++;arg0.getSession().getServletContext().setAttribute("userNumber", userNumber);}@Overridepublic void sessionDestroyed(HttpSessionEvent arg0) {userNumber--;arg0.getSession().getServletContext().setAttribute("userNumber", userNumber);ArrayList<User> userList = null;//在线用户List
        userList = (ArrayList<User>)arg0.getSession().getServletContext().getAttribute("userList");if(SessionUtil.getUserBySessionId(userList, arg0.getSession().getId())!=null){userList.remove(SessionUtil.getUserBySessionId(userList, arg0.getSession().getId()));}}}
View Code

ServletRequest实现了ServletRequestListener 接口;

public void requestDestroyed(ServletRequestEvent arg0) 

Request创建时调用;

public void requestInitialized(ServletRequestEvent arg0)

Request销毁时调用; 用途:读取参数;记录访问历史;

事例代码:

import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpServletRequest;@WebListener
public class MyServletRequestListener implements ServletRequestListener {@Overridepublic void requestDestroyed(ServletRequestEvent arg0) {}@Overridepublic void requestInitialized(ServletRequestEvent arg0) {System.out.println("fff");}}
View Code

 

转载于:https://www.cnblogs.com/zht0915/p/4688854.html

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

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

相关文章

数字图像处理 第二章 图像处理基础

数字图像处理基础 2.1 色度学基础 色度学 人的视觉特性 2.1.1 三基色原理 人眼的视网膜上存在有大量能在适当亮度下分辨颜色的锥状细胞&#xff0c;它们分别对应红、绿、蓝三种颜色,即分别对红光、绿光、蓝光敏感。由此,红、绿(G)、蓝(B)这三种颜色被称为三基色。 红、绿、…

人工智能的第三定律:计算的未来是模拟

来源&#xff1a;秦安战略、雷锋网摘要&#xff1a;计算机领域的下一次革命的标志将是模拟系统的崛起&#xff0c;而数字化编程不再具有统治地位。在人工智能研究如火如荼的今天&#xff0c;似乎也是时候回过头来思考一下模拟计算在未来所具有的意义。当人类已经习惯于通过数字…

DevExpress控件库----AlertControl提示控件

AlertControl控件可以在给用户弹出提示信息时&#xff01;能够很好的弹出个性化的窗口。 简单易用&#xff1a;此时弹出窗口&#xff1a; this.alertControl1.Show(this, "提示!", "您有一条消息!"); 简单属性设置&#xff1a;设置提出窗口的显示的位置 th…

数字图像处理 第三章 图像变换

图像变换 图像和其他信号一样&#xff0c;既能在空间域(简称空域)处理,也能在频率域(简称频域)处理。把图像信息从空域变换到频域&#xff0c;可以更好地分析、加工、处理图像信息。因为图像信息的频域处理具有如下特点:①能量守恒&#xff0c;但能量重新分配;②有利于提取图像…

数字图像处理 第四章 图像增强

图像增强 图像增强按照作用域可分为空域法和频域法两类。 1.空域法 空域法是直接对图像的像素灰度值进行操作。常用的空域法包括图像的灰度变换、直方图修正、图像空域平滑和锐化处理、彩色增强等。 2.时域法 频域法是在图像的变换域中,对图像的变换值进行操作,然后经逆变…

一文看懂人脸识别技术发展脉络

来源&#xff1a;InfoQ人脸识别可以说是人工智能领域中成熟较早、落地较广的技术之一&#xff0c;从机场、火车站的安检闸机&#xff0c;到平常用户手机中的“刷脸”支付&#xff0c;人脸识别技术已经深入到我们的生活当中。为了让各位读者深入浅出地全面了解人脸识别技术&…

Linux服务器运行环境搭建(二)——Redis数据库安装

官网地址&#xff1a;http://redis.io/ 官网下载地址&#xff1a;http://redis.io/download 1. 下载Redis源码&#xff08;tar.gz&#xff09;&#xff0c;并上传到Linux 2. 解压缩包&#xff1a;tar zxvf redis-2.8.17.tar.gz 3. 进入解压缩后的文件夹&#xff1a;cd redis-2.…

第三章 VHDL语言的基本结构

VHDL语言的基本结构 一、VHDL设计简述 VHDL主要用于描述数字系统的结构、行为、功能和接口。 VHDL将一个设计(元件、电路、系统)分为: 外部(可视部分、端口) 内部(不可视部分、内部功能、算法) 1.VHDL语言的一些基本特点 二、实体 1.功能 描述设计模块的输入/输出信号或引脚…

中国科学家发现恐惧情绪的新环路

来源&#xff1a;科学网北京时间4月29日23时&#xff0c;浙江大学医学院教授李晓明课题组在《自然-神经科学》在线发表了题为《一条新的介导恐惧逃跑行为的皮层丘脑神经环路》的研究论文。该研究新发现了一条由丘脑网状核介导的从皮层至丘脑的神经环路&#xff0c;参与调控动物…

[FPGA]基于FPGA的数字跑表

基于FPGA的数字跑表的设计与实现 一、设计要求 用FPGA设计并实现一个数字跑表&#xff0c;范围为0~59分59.99秒。可以实现数字跑表进行启动、停止计时和显示读数三个操作&#xff0c;可以在数码管上显示读数。 二、设计任务 2.1基本部分 &#xff08;1&#xff09;了解FPGA开发…

人工智能:AI 芯片快速起航

来源&#xff1a;平安证券摘要&#xff1a;当前&#xff0c;在算力、算法和大数据三驾马车的支撑下&#xff0c;全球人工智能进入第三次爆发期。然而&#xff0c;作为引爆点的深度学习算法&#xff0c;对现有的算力尤其是芯片提出了更为苛刻的要求。在AI场景中&#xff0c;传统…

坐标系编程

世界坐标系(平移)->惯性坐标系&#xff08;旋转&#xff09;->物体坐标系 世界坐标系与惯性坐标系的坐标轴平行 惯性坐标系与物体坐标系的原点重合 转载于:https://www.cnblogs.com/xrj3000/p/4693954.html

未来今日研究所:2019技术趋势报告

来源&#xff1a;资本实验家摘要&#xff1a;近期&#xff0c;著名研究机构未来今日研究所&#xff08;Future Today Institute&#xff09;发布了《2019技术趋势报告》。该报告涉及人工智能、网络安全、隐私与数据、交通、先进机器人、电子竞技、营销与广告、能源、气候与地理…

7大车企电动策略,平台化到底是解药还是毒药?

来源&#xff1a;车云电动化&#xff0c;已经成为当下汽车行业绕不开的话题&#xff0c;虽然几个国际主流汽车面对电动时代的态度都不一样&#xff08;各自的情况不同&#xff09;&#xff0c;但不得不说&#xff0c;它们都在积极筹备着这一产业转型带来的冲击。电动化平台&…

浙大神经中心李晓明教授团队在《自然-神经科学》发文发现恐惧情绪的新环路...

左起&#xff1a;余小丹&#xff0c;沈晨杰&#xff0c;付佳毓&#xff0c;王浩&#xff0c;李晓明&#xff0c;李春悦&#xff0c;郑迪来源 : 浙江大学神经科学研究所北京时间4月29日23时&#xff0c;浙江大学医学院李晓明教授课题组在《自然-神经科学》&#xff08;Nature Ne…

人工智能的社会、伦理与未来

来源&#xff1a;澎湃新闻人工智能的创新与社会应用方兴未艾&#xff0c;智能社会已见端倪。为了推动人工智能的社会、伦理与未来研究&#xff0c;构筑国内相关研究的网络与平台&#xff0c;中国社科院科学技术和社会研究中心、国家社科基金重大项目“智能革命与人类深度科技化…

Debug Assertion Failed _CrtlsValidHeapPointer(block) realloc堆引发的错误

应用场景 二级指针的应用中堆的处理 问题描述&#xff1a; realloc后出现堆错误 #include"algorithm.h"//数组插入元素 int insert(int **pp ,int &n,int tmp, int pos) {if (0 < pos&&pos < n){int *po *pp;//保存 旧一级指针int *pnNULL;//…

观点 | 李飞飞最新访谈:我每天都在对AI的担忧中醒来

来源&#xff1a;AI科技评论是的&#xff0c;最近这些年&#xff0c;无人机可以说是爆发式发展。以前&#xff0c;它仅用于神秘的军事用途。如今&#xff0c;却在我们的日常生活中见怪不怪。人工智能对人类会产生什么影响&#xff0c;一直是值得讨论的话题&#xff0c;它会更好…

数字图像处理 图像变换

数字图像基础参考资料一、人眼视觉特性二、图像基本知识1.图像类别2.图像输入3.图像输出三、图像处理1.图像类型转化2.图像变换点变换代数运算几何运算参考资料 一、人眼视觉特性 韦伯率:50%概率感觉到亮度变化时的 ΔII\frac{\Delta I}{I}IΔI​为韦伯率。 韦伯-费希纳定律&a…

超乎想象!关于5G无人机的最强科普!

来源&#xff1a;鲜枣课堂/xzclasscom说到无人机&#xff0c;大家一定都非常熟悉。是的&#xff0c;最近这些年&#xff0c;无人机可以说是爆发式发展。以前&#xff0c;它仅用于神秘的军事用途。如今&#xff0c;却在我们的日常生活中见怪不怪。我们身边出现了越来越多的无人机…