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开发…

求方程解问题

测试你是否和LTC水平一样高 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 14886 Accepted Submission(s): 4890 Problem Description大家提到LTC都佩服的不行&#xff0c;不过&#xff0c;如果竞赛只有这一个…

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

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

第4章 分治策略 monge阵列

/* fi表示第i行的最左最小元素的列小标&#xff0c;则有f0<f1<f2<...<fn-1取数组的偶数行&#xff0c;组成新的子数组&#xff0c;递归求解最左最小元素的列下表&#xff0c;利用偶数项限定奇数项的范围&#xff0c;再求奇数项 */ #include<iostream> #incl…

坐标系编程

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

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

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

excel导入数据到sqlserver

一&#xff0c;ADO.net的方式 1、读取excel数据到dataset public static System.Data.DataSet ExcelSqlConnection(string filepath, string tableName){string strCon "ProviderMicrosoft.Jet.OLEDB.4.0;Data Source" filepath ";Extended PropertiesExcel …

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

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

java中判空

一、概述 java中判等似乎很简单&#xff0c;用来判断对象引用&#xff08;内存地址&#xff09;是否相同&#xff0c;equals用来判断值是否相同。你可以试用String对象轻松区分这一点。 那么在null判等&#xff08;也就是判空操作&#xff09;时呢&#xff1f; 可以通过如下代码…

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

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

MTK+Android编译

1. 修改recovery代码 比如mediatek\custom\itek82_wet_kk\recovery\inc\cust_keys.h ./mk r k ./mk recoveryimage 更新recovery.img2.修改factory代码 factory mode related program and resources are built-in to system.img ./mk mm mediate/factory ./mk snod这会生成生成…