【JavaWeb】18-listerner监听器

利用HttpSessionListerner实现在线人数统计 javascript代码模块之利用HttpSessionListerner实现在线人数统计 立即下载

监听web项目中的三个域对象

application(servletContext)
session(HttpSession)
request(HttpServletRequest)

监听的内容

1. 三个对象的创建于销毁
2. 三个对象的属性变化(增加属性,修改属性,移除属性)
3. session中javabean的状态(钝化和活化)

注意:
    所有的监听器都是接口,都需要程序员去做实现

监听三个对象的创建和销毁

ServletContextListener:
    创建:服务器启动时,每个项目都会创建一个ServletContext
    销毁: 服务器正常关闭时
    作用: 用于项目启动时加载一些配置文件,或者在application中存放一些属性
    
HttpSessionListener:
    创建: 用户第一次请求项目,成功创建会话时
    销毁:session超时,session手动销毁,服务器非正常关闭(如果正常关闭,session会钝化到磁盘)
    
ServletRequestListener:
    创建: 用户请求时
    销毁: 响应生成时

监听三个对象的属性变化

ServletContextAttributeListener

HttpSessionAttributeListener
    session域中,添加,修改,删除属性时触发对应的方法
    可以防止一个账号多端登陆
    
ServletRequesetAttributeListener

实例:

  1. 监听ServletContext,初始化加上项目的根路径
public class MyServletContextListener implements ServletContextListener {

    public void contextDestroyed(ServletContextEvent sce)  { 
    	System.out.println("ServletContext销毁完毕...");
    }

    public void contextInitialized(ServletContextEvent sce)  { 
    	System.out.println("ServletContext初始化完毕...");
    	
    	sce.getServletContext().setAttribute("bp", sce.getServletContext().getContextPath());
    	
    }
	
}
  1. 监听session值的改变
@WebListener
public class MyHttpSessionAttributeListener implements HttpSessionAttributeListener {

    public void attributeAdded(HttpSessionBindingEvent event)  { 
    	 System.out.println("session中属性被添加");
    	 System.out.println(event.getName() + "::" + event.getValue());
    }

    public void attributeRemoved(HttpSessionBindingEvent event)  { 
    	 System.out.println("session中属性被删除");
    	 System.out.println(event.getName() + "::" + event.getValue());
    }

    public void attributeReplaced(HttpSessionBindingEvent event)  { 
         System.out.println("session中属性被修改");
         System.out.println(event.getName() + "::" + event.getValue() + "::" + event.getSession().getAttribute(event.getName()));
    }
	
}
  1. 防止多端登陆
@WebListener
public class LoginListener implements HttpSessionAttributeListener {
    //静态的map集合,key是用户名,value是session
    //实现数据共享,不同listener实例可以获取到所有session对象
    private static Map<String, HttpSession> sessionMap = new HashMap<>();
    
    public void attributeAdded(HttpSessionBindingEvent event) {
        //每个用户实现登陆时,都会创建自己的onlineUser属性
        if("onlineUser".equals(event.getNam())) {
            User onlineUser = (User)event.getValue();
            //判断该用户是否已经在线
            if(sessionMap.containsKey(onlineUser.getUsername())) {
                //让之前用户的session失效
                sessionMap.get(onlineUser.getUsername()).invalidate();
            }
            //将本次登陆的session存放到map中
            sessionMap.put(onlineUser.getUsername, event.getSession());
        }
    }
    
    public void attributeRemoved(HttpSessionBindingEvent event) {
        if("onlineUser".equals(event.getName())){
            User onlineUser = (User)event.getValue();
            sessionMap.remove(onlineUser.getUsername);
        }
    }
}
具身智能数据采集的工程化指南:从时间同步到质量校验 具身智能的模型训练离不开高质量的多模态轨迹数据,而数据采集并非简单的传感器记录。真实场景中,相机图像、机械臂关节状态与力觉信息必须在时间轴上精确对齐,标定的漂移和格式混乱会让看似正常的数据无法用于训练。时间同步与标定一致性,是决定数据质量的核心技术环节。在机器人抓取、操作等工程应用中,一套包含多传感器同步、轻量记录脚本、自动化质量校验与版本管理的数据采集流程,能大幅降低数据生产的失败率。本文从工程视角拆解具身数据采集中的典型问题,并给出可落地的流程设计与校验方法,帮助团队构建可持续迭代的高质量数据集。 阅读详情

相关推荐

vue3 web项目引入高拍仪

高拍仪的引入步骤就两步,安装SDK,然后根据官网的api进行开发。根据自己需要的功能,请求对应的接口。

qq_42480170的博客 4115

【Java 进阶篇】Java Listener 使用详解

Listener 是 Java Servlet 规范中的一部分,它提供了一种机制,使开发者能够编写监听器类来监听容器事件,并在事件发生时执行相应的逻辑。这样的机制使得我们能够在不修改源代码的情况下,通过监听器对现有应用程序进行扩展或增强。

繁依Fanyi的博客 2569

相机基础知识讲解:CMOS和CCD

相机基础知识讲解:CMOS和CCD

Coppa的博客 5万+

监听器Listerner

1.什么是监听器? 监听器就是一个java来监听其他java的状态 主要应用在GUI Android 方面 事件源: 轮胎 监听器:胎压报警器 事件源与监听器绑定:安装了胎压报警器的轮胎 事件:一根绣花针 GUI方面的小应用: package com.com.xuzz.jframe; import javax.swing.*; import java.awt.event.Wind...

zeubb88的博客 1095

C#从入门到精通(35)—如何防止winform程序因为误操作被关闭

我们在开发的上位机软件运行起来以后,一般在右上角都有一个关闭按钮,正常情况下点击关闭按钮就能关闭软件,但是不排除我们不想关闭软件,但是因为不小心把鼠标点到了关闭按钮,如果这是一个正在生产的机器,突然关闭软件可能会导致产品损坏,那么我们如何去解决这个误操作的问题呢,本文就来讲解解决方案!

qq_34059233的博客 676

数据结构课程设计C/C++版--美团餐馆预定信息的管理与分析 1 2

本关任务:从文件user.txt中读取用户信息,包括账号、密码、联系方式等,创建一个用户信息的顺序表,根据账号判断顺序表中是否存在当前用户。如果存在,则添加失败。否则,判断输入的用户信息中是否有非法输入,若有则添加失败,否则将该用户作为新结点,按顺序插入到顺序表的相应位置,并将用户顺序表写入user.txt中。本关任务:从文件user.txt中读取用户信息,存入顺序表中。输入待查找的用户账号,调用折半查找算法判断用户顺序表中是否存在该用户的账号信息。如果存在,则返回其在顺序表中的位置,说明查找成功;

m0_62222486的博客 4934

java listener详解_Java监听器Listener使用详解

监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动。监听器其实就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法立即被执行。上述概念设计到3个名词概念:1.事件源:即谁产生的事件2.事件对象:即产生了什么事件3.监听器:监听事件源的动...

weixin_42124497的博客 5045

SA8155P QCOM 车载系统介绍

高通车载相机开发

qq_37057338的博客 5223

JavaWeb-Listener编程详解

关于监听器的介绍与使用

qq_51938362的博客 1089

时空智友企业信息管理系统任意文件读取漏洞复现

时空智友企业信息管理系统是一个用于企业流程管理和控制的软件系统。它旨在帮助企业实现流程的规范化、自动化和优化,从而提高工作效率、降低成本并提升管理水平。时空智友企业信息管理系统存在任意文件读取漏洞,攻击者可以在未授权的情况下读取系统上的文件。没有人规定,一朵花一定要成长为向日葵或者玫瑰。

The current road is different, love needs to distinguish between right and wrong 970

从零开始学 PyTorch 7天路线图(完整可运行代码版)

本文提供了5天PyTorch入门教程的完整代码,涵盖从基础到实战的核心内容。Day1测试环境并介绍张量基础;Day2讲解常用张量操作;Day3演示自动求导机制;Day4实现完整线性回归模型;Day5构建MNIST手写数字识别全连接网络。所有代码可直接运行,包含GPU检测、梯度计算、模型训练和可视化等关键环节,帮助新手快速掌握PyTorch核心概念和典型应用场景。

IT老农民的博客 314

JavaWeb三大技术之Listener

监听器Listener对于我的理解,我感觉监听器Listener的作用没有过滤器Filter的作用大,在接下来我会总结下javaweb三大技术Filter的学习心得,这里我通过一个案例来说明Listerner的作用 需要了解监听器执行原理 阐述WEB开发中使用到8种监听器 需要了解邮件协议 需要了解Java程序发送邮件 案例:使用监听器完成定时发送生日祝福邮件一,需求分析​ 当我们使用QQ时,在

chendeng的博客 1万+

PCL学习笔记(四)——点云曲面重建

文章目录一、凸包算法二、 单纯的点云数据固然很好,但仅仅是点的话仍是不够的,因为这不利于我们后续对实体对象的渲染与各种应用,如计算实体的表面积、体积等等,所以这就需要我们对实体进行点云的曲面重建。 一、凸包算法 在计算机图形学中,凸包是指在任意维空间中包含某一有限点集P的最小凸集,它由凸包顶点构成,在二维上其表现形式为一个凸多边形,而在三维上则表现为一个凸多面体。在二维层面上来讲,最常用的凸包算法有Graham扫描法和Jarvis卷包裹法,但前者并不适用于三维层面,后者倒是可以扩展到三维。除此之外,在

dayuhaitang1的博客 6912

java中对list监听_java – Guava:为ListenableFuture回调和监听器设置默认的Executor

我们的应用程序有许多实现基于ListenableFuture的API的服务,可以调整:public interface MyService {ListenableFuture getMyThing();ListenableFuture> putMyThing(Thing thing);}由于我们的域模型根本不是线程安全的,因此我们在众所周知的单线程Executor上运行除了上述服务之外的大部...

weixin_27027459的博客 693

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java监听器Listener使用详解

        Listener基于Servlet API,用于监听web应用中某些对象、信息的创建、销毁、增加,修改,删除等动作的发生,然后作出相应的响应处理。当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。常用于统计在线人数和在线用户,系统加载时进行信息初始化,统计网站的访问量等等。 分类: ServletContext对象监听器(ServletContextListene...

kunpeng90的博客 686

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

JavaEE Listerner组件

一 监听器 监听器在生活和程序中被广泛的应用。生活中,烟雾报警器监听到火苗 燃烧,会发出警报并打开水管,喷水灭火;家用摄像头监听到有人 走动时,会发送视频片段到你的手机。程序中,无论是使用java,C++,还是html编写的用户界面,当按钮监听到鼠标 点击时,会做出某些动作。 从上面描述中,我们可以发现监听器的一些特征: 监听器,监听到对象发生某事件会执行相应任务。 ...

gao_zhennan的博客 1001

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java三大器之监听器(Listener)的工作原理和代码演示

现在来说说Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener 接口的服务器端程序,它也是随web应用的启动 而启动,只初始化一次,随web应用的停止而销毁。主要作用是:做一些初始化的内容添加工作、设置一些基本的内容、比如一些参数或者是一些 固定的对象等等。首先来看一下ServletContextListener接口的源代码

reggergdsg的博客 6万+

java各种listner_Java 监听器 Listener

1、什么是Java监听器监听器也叫Listener,是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。2、Listener接口分类1>ServletContextListener监听ServletContext对象2>ServletContextAttributeListener监听对ServletCont...

weixin_32154109的博客 376

Java Web中的Listener

Listerner:监听器,可以监听对象的创建、删除、属性绑定、属性删除、属性修改等,最常用的就是用来实现在线用户的统计 在Servlet中一共有8种监听器,可监听ServletContext、HttpSession、ServletRequest(不是HttpSerlvetRequest),按监听的域不同可分为3类:   1.  域对象的创建与销毁 ServletContextList...

ninxiais的专栏 253

java各种listner_java常用的Listener分类

Listener是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。(通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。当增加一个HttpSession时,就激发 sessionCreated(HttpSessionEvent se)方法,这样就可以给在线人数加1。)Servlet 监听器用于监听一些重要事件的发生,监听器对象在事情发生前、发生后可以做一些必要的处理。目前 ...

weixin_30420045的博客 347

java各种listner_Java 中 Listener 模式示例

鼠标点击监听示例。先定义鼠标动作监听器:1 interface MouseListener {2 //当click方法被调用的时候代表被鼠标点击了.3 void click();4 }上面是一个接口,里面只有一个方法.先就通过一个例子展示java是如果施展多态的力量了.1 public class Model {23 //初始化50个监听器4 private M...

weixin_34512248的博客 194

Java(Listener)

一.listener的介绍 概念: 监听器其实就是一个实现特定接口的普通java程序 用于监听另一个对象事件的发生,当事件发生后,监听器的方法立即被执行。 ps:例如实现接口ServletContextListener,ServletRequestListener,HttpSessionListener 作用: 监听javaweb的三个对象,ServletContext,Servlet...

taka_is_beauty的博客 705

Java利用listener实现回调,即观察者模式

java中实现观察者模式有很多种方式,上一篇文章介绍到了,利用callback的方式实现了回调,这篇文章准备介绍的是利用listener实现回调。 Java回调机制根据实时性划分: 同步回调 异步回调 实现方式 利用匿名内部类即callbck来实现 用listener来实现 这两种实现方式本质上是类似的,应用场景略有不同,如果有熟知安卓的朋友应该可以知道,在为一个view添加点击实现的时候是有两种方

linSir's blog 7251

java设计模式之观察者模式

天气预报需求 气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)。 需要设计开放型API,便于其他第三方也能接入气象站获取数据。 提供温度、气压和湿度的接口 测量数据更新时,要能实时的通知给第三方 普通方案 通过getXxx方法,可以让第三方接入,并得到相关信息. 当数据有更新时,气象站通过调用dataChange() 去更新数据,当第三方再次获取时,就能得到最新数据,当然也可以推送。 public class CurrentConditions {

weixin_44991304的博客 2668

java web-10Filter和Listerner

1.Filter:过滤器 2.Listener:监听器 Filter概述 生活中过滤器:净水器,空气净化器 web中过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能 过滤器的作用:一般用于完成通用的操作,例如:登录验证,统一编码处理,敏感字符过滤。。。 Filter快速入门 1.步骤: (1)定义一个类,实现接口Filter (2)复写方法, (3)配置拦截路径 配置方式: a.web.xml配置 b.配置 Filter细节 一、web.xml配置方式 <filter&g

weixin_39795049的博客 258

Java如何使用Listener

定义用于监听Web应用的内部事件的实现类。可以监听用户session的开始与结束,用户请求的到达等等,当事件发生时,会回调监听器的内部方法常用Web事件监听器接口1. ServletContextListener 该接口用于监听Web应用的启动与关闭 该接口的两个方法: contextInitialized(ServletContextEvent event); // 启动web应用时调用 con

爱雨轩 1万+
上一篇: 【JavaWeb】17-利用反射改写servlet与beanutils的使用
下一篇: 【JavaWeb】19-分页查询的实现
JeffHan^_^
博客等级 码龄7年 1万+粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JeffHan^_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值