session监听

5. Spring Session 监听器-HttpSessionListener 我们知道在普通web 应用中, 是可以自定义session监听器的, 可以监听session的创建和销毁过程, 然后在session的创建和销毁时做一些初始化或清理操作. spring session中也支持自定义session 监听器, 而且配置更简单. 1. HttpSessionListener 定义 自定义监听器时需要实现HttpSessionListener接口, 所以我们首先看一下Ht... 阅读详情

servlet中对session的监听有很多接口,功能很灵活,最常用的是监听Session和Attribute。这里要澄清一下概念,servlet中的session监听和Attribute监听含义有差别,session监听指的不是我们一般所理解的放置一个session或者销毁一个session,这是Attribute监听的功能,因为servlet中放置session的语法是session.setAttribute(“session名”,要放入的对象)。而session监听,监听的是HTTP连接,只要有用户与server连接,就算连接的是一个空白的jsp页面,也会触发session事件,所以此处的session实际上指的是connection,用来统计当前在线用户数最合适了。不知道我说清楚了没有。下面分别讲解这两种监听方式。 

1
、 session监听 

首先编写一个session监听类,实作HttpSessionListener接口,它的作用是计算当前有多少个在线用户:  

import javax.servlet.*; 
import javax.servlet.http.*; 

public class SessionCount implements HttpSessionListener{ 
  
private static int count=0; 

  
public void sessionCreated(HttpSessionEvent se){ 
    count
++; 
    System.out.println(“session创建:”
+new java.util.Date()); 
  }
 

  
public void sessionDestroyed(HttpSessionEvent se){ 
    count
--; 
    System.out.println(“session销毁:”
+new java.util.Date()); 
  }
 

  
public static int getCount(){ 
    
return(count); 
  }
 
}
 

  怎么样,是不是一目了然?count被定义为static,是因为要保证整个系统只有这一个count。如果你实在不放心,可以把它写成一个单例类。 

然后在web.xml中声明这个监听器: 
<listener> 
 <listener-class> 
   org.bromon.test.SessionCount 
 </listener-class> 
</listener> 

编写一个测试页面test.jsp,内容是获得count: 
<% 
 int count=org.bromon.test.SessionCount.getCount(); 
 out.println(count); 
%> 
    
需要注意的是,这里根本不涉及任何session的操作。重启动App server,试着连接test.jsp,可以看到监听器已经开始工作。 

2
、 Attribute监听 
    
例如一个站内消息系统,肯定要获得所有登陆者的ID,才有可能互发消息。这就涉及Attribute监听。假设我们写了个用户登陆的模块,用户通过身份验证之后会产生一个session,保存它的相关信息,比如: 
//check.jsp 
<% 
String name=request.getParameter(“name”); 
Name=new String(name.getBytes(“ISO8859-1”)); 
session.setAttribute(“user”,name); 
%> 

    
做过jsp的兄弟应该对这段代码再熟悉不过了,下面写个监听器来监听用户登陆,把所有用户的ID保存到一个List当中,这个监听器实现HttpSessionAttributeListener接口: 

写个简单的jsp来得到用户列表: 
<% 
 java.util.List list=org.bromon.test.OnlineList.getList(); 
 out.println("
共有"+list.size()+"名用户已登陆:"); 
 for(int I=0;I<lise.size();i++){ 
    out.println(list.get(i)); 
 } 
%>

import javax.servlet.*; 
import javax.servlet.http.*; 
import java.util.*; 

public class OnlineList implements HttpSessionAttributeListener{ 
   
private static List list=new ArrayList(); 

   
public void attributeAdded(HttpSessionBindingEvent se){ 
     
if("user".equals(se.getName())){ 
       list.add(se.getValue()); 
     }
 
  }
 

   
public void attributeRemoved(HttpSessionBindingEvent se){ 
     
if("user".equals(se.getName())){ 
       list.remove(se.getValue()); 
     }
 
   }
 

  
public void attributeReplaced(HttpSessionBindingEvent se){} 

  
public static List getList(){ 
     
return(list); 
  }
 
}
 



联想X3650M5服务器双模式切换实战:UEFI与Legacy BIOS如何选择? 本文深入探讨了联想X3650 M5服务器在UEFI与Legacy BIOS启动模式间的选择策略。文章从技术原理、决策矩阵、实战切换步骤及后期验证等方面,为企业IT管理员提供了基于操作系统兼容性、存储架构、安全合规与运维习惯的完整决策框架,帮助其在数据中心硬件生命周期管理中做出明智选择。 阅读详情

相关推荐

高斯投影坐标正反算算法(python)

高斯坐标正反算算法,在正算的时候,y的第一个数字表示是用几度带换算的,第二个数字和第三个数字表示带号。该程序是根据武汉大学出版社出版的第三版的《大地测量学基础》编写, 用于课程实验学习。

weixin_64338372的博客 4588

监听器之Session监听

监听实际上指的是对整个Web中需要的位置上的操作进行的一种监听而已,当发生了某些操作之中会自动的执行一些处理功能。那么怎么进行监听呢? 在监听器里面实际上主要都是针对于属性的监听(request、session、application)。 所谓的session监听主要指的是针对与某一个用户进行的监视。 Session监听主要为: 一、 对session的状态监听,HttpSessionListen...

不喜什锦 7722

SRE校招面试全攻略:从基础理论到实战场景解析

本文为SRE(站点可靠性工程)校招面试提供全面攻略,涵盖计算机基础、运维核心技能、场景设计与系统架构等关键模块。文章结合真实面试真题,解析了从Linux原理、网络协议到容器化、监控告警等实战考点,并分享了高可用设计、故障排查等工程思维,旨在帮助应届生夯实基础、理清思路,从容应对SRE校招挑战。

bush的博客 644

session监听器

文章目录session内置对象的监听器监听session的状态销毁session对象监听session的属性监听属性 session内置对象的监听器 和request内置对象的监听一样,可以对session的状态和属性进行监听。 1.对session的状态进行监听 要对状态进行监听需要实现的接口是javax.servlet.http.HttpSessionListener 监听session的状态...

慕北丶 815

保姆级教程:在华为MateBook E Go上安装安卓子系统(含Hyper-V配置和地区切换避坑指南)

本文提供在华为MateBook E Go(ARM架构)上安装Windows 11安卓子系统(WSA)的详细指南。重点阐述了ARM平台无需指令转译的流畅原生体验优势,并逐步讲解启用Hyper-V虚拟化、切换系统区域以安装Amazon Appstore、配置开发人员模式及使用ADB安装第三方应用(如华为应用市场)的全过程,助您解锁高效的原生安卓应用生态。

kafka6courier的博客 544

Xilinx系列学习(一) BRAM的使用,并用PL读取BRAM数据

Xilinx系列学习(一) BRAM的使用,并用PL读取BRAM数据一,Xilinx BRAM介绍二,BRAM对应的IP核调用和使用1,BRAM对应的IP核介绍2,BMG例化IP核的调用 一,Xilinx BRAM介绍 BRAM 就是Block Memory,是Zynq的PL端的存储RAM单元。可以利用BRAM,在PS和PL之间进行数据的交换。Zynq中还有一类存储器,称为分布式随机访问存储器(D...

weixin_43941525的博客 3万+

Session监听

void attributeAdded(HttpSessionBindingEvent hbe) 说明当HttpSession对象新增加属性时,web容器调用此方法。void attributeRemoved(HttpSessionBindingEvent hbe) 说明当HttpSession对象被删除时,web容器调用此方法。实现此接口的JavaBean,可以感知自己被活化(从硬盘到内存)和钝化(从内存到硬盘)的过程。说明当HttpSession对象被销毁时,Web容器调用此方法。

bishe361的博客 1173

STM32 BLDC无刷电机霍尔信号捕获与换相控制实战解析

本文深入解析了STM32如何实现BLDC无刷电机的霍尔信号捕获与换相控制。详细阐述了硬件接口配置、定时器霍尔传感器模式的使用、抗干扰的滤波器与软件容错设计,以及中断服务与换相逻辑的实战代码。重点解决了信号抖动、换相不准等常见问题,旨在帮助开发者构建稳定可靠的电机驱动基础。

weixin_29193259的博客 369

servlet监听对session监听器

<br />关键字: servlet监听器使用 Servlet监听器对Session监听的方法如下: <br />1.HttpSessionListener <br />public void sessionCreated(HttpSessionEvent se):创建 <br />public void sessionDestroyed(HttpSessionEvent se):销毁 <br /><br />2.HttpSessionAttributeListener <br />public void

kangojian的专栏 3436

YOLOv9分割改进 ,YOLOv9分割改进主干网络为华为EfficientNet,助力涨点

EfficientNet论文中研究了卷积网络的缩放和,并证明对深度,宽度和分辨率复合缩放的重要性,因此精度和效率更好。为了阐述相关的原理,我们提出了简单有效的复合缩放方法,使得模型缩放具有一定设计准则,同时兼顾了模型的效率。我下文将 YOLOv9 分割模型改进主干网络为 EfficientNet 融合网络结构。论文地址代码地址下文都是手把手教程,跟着操作即可添加成功把环境配置好,数据集处理好,训练基本能成功,创作不易,请帮忙点一个爱心,关注我,带你不挂科!

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 939

【RT-DETR改进涨点】ResNet18、34、50、101等多个版本移植到ultralytics仓库(RT-DETR官方一比一移植)

本文是本专栏的第一篇改进,我将RT-DETR官方版本中的ResNet18、ResNet34、ResNet50、ResNet101移植到ultralytics仓库,网上很多改进机制是将基础版本的也就是2015年发布的ResNet移植到ultralytics仓库中,但是其实RT-DETR实验的ResNet和其是有很大区别的在其中有很多细节上的不同(文章中我也会列出举例)

Snu77的博客 7222

Spring Session Redis最佳实践(4)Session监听器

欢迎转至站内查看原文,链接为:https://www.chendd.cn/information/viewInformation/experienceShare/312.a 在说前文中的Spring Session JDBC的时候,废了很大的劲儿和时间最终得出来的是JDBC的方式不能实现Session监听功能,后来也琢磨明白了,我们面向数据库存储的方式可以非常轻易的去实现session类监听的功...

haiyangyiba的专栏 1527

Linux脚本实战之SSH执行远端脚本

Linux脚本实战之SSH连接主机

jks212454的博客 2135

springboot监听session

@Bean public HttpSessionListener httpSessionListener(TaggingServiceImpl taggingService) { return new HttpSessionListener() { @Override public void sessionCreated(HttpSessionEvent se) { ...

Yuan_xii的博客 460

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Session监听器

Session 内置对象的监听器 Demo: 监听 session 的状态1.定义 session 内置对象的状态监听器 1 public class SessionListener implements HttpSessionListener { 2 @Override 3 public void sessionCreated(HttpSessionEvent e...

weixin_34217711的博客 121

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Vue 如何监听session值的变化

如何监听session值的变化 首先在在main.js给Vue.protorype注册一个全局方法 //main.js Vue.prototype.resetSetItem = function (key, newVal) { if (key =='collapse') { // 创建一个StorageEvent事件 var newStorageEvent ...

weixin_43208652的博客 5851

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java session监听器_实现session监听器

监听器概述1.Listener是Servlet的监听器2.可以监听客户端的请求、服务端的操作等。3.通过监听器,可以自动激发一些操作,如监听在线用户数量,当增加一个HttpSession时,给在线人数加1。4.编写监听器需要实现相应的接口5.编写完成后在web.xml文件中配置一下,就可以起作用了6.可以在不修改现有系统基础上,增加web应用程序生命周期事件的跟踪常用的监听接口Java代码1.Se...

weixin_32515741的博客 1238

Spring Boot 之 session监听器

session存在服务端,session监听器可以用来跟踪session的生命周期。spring-boot项目越来越流行,我就记录下spring boot项目中使用session监听器的过程,以便以后参考。 spring boot使用监听器非常方便,使用这2个注解就可自动加载注册了:@WebListener和@ServletComponentScan 为了加深理解,使用在线百度翻译了下:当使用嵌入式容器时,可以通过使用@ServletComponentScan启用@WebServlet、@WebFilter

当冬夜渐暖的博客 2479

监听——session

和监听——context一致,都有监听的触发方法及相应属性的监听。 实现了接口 HttpSessionListener 触发方法: public void sessionCreated(HttpSessionEvent httpSessionEvent) { } @Override public void sessionDestroyed(HttpSessionEvent httpSessionEvent) { } sessionCreated() 表

yooppa的博客 1604

session监听 HttpSessionBindingListener

[该文章转载至:http://blog.sina.com.cn/s/blog_4dacfb010100qxf8.html] 首先我在网上查了一下session的真正销毁条件: 1调用 session.invalidate();方法 2 session到了设置或者默认的超时时间,自动销毁(关闭浏览器此session还未销毁,只是不能再用了); 明白了上面的两条就可以去研究一下

lovesea9的专栏 1万+

监听器Listener(application、session监听器的实现以及session属性的监听器)

Listener的作用: Listener是Servlet规范的另一个高级特性,用于监听Java Web程序中的事件,例如创建、销毁session、request、context等,并触发相应的事件,事件发生的时候会自动触发该事件对应的Listener。 Java Web程序也一样,使用Listener和Event完成相应事件的处理。 监听器Listener的配置: //application...

Denial_learn的博客 956
上一篇: 一招克死所有病毒.上网不用防火墙
下一篇: QQ空间代码. 教你如何快捷的把空间弄的超漂亮
txlaijava
博客等级 码龄19年 10粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值