HttpSession相关的监听器

springboot之HttpSessionListener的用法创建,销毁 一.HttpSessionListener的作用 这个接口也只包含两个方法,分别对应于Session的创建和失效: # public void sessionCreated(HttpSessionEvent se);# public void sessionDestroyed(HttpSessionEvent se); 二.HttpSessionListener的触发机制 当一个浏览器第一次访问网站的时候,J2EE应用服务器会新建一个HttpSession对象 ,并触发 HttpSession创建事件 阅读详情

 1、HttpSessionListener
 public void sessionCreated(HttpSessionEvent se)
 public void sessionDestroyed(HttpSessionEvent se)
这个监听器可以监听一个session对象的建立与失效,从方法的名字中可以很容易的看出

。例:
public class MySessionListener implements HttpSessionListerner {
  public void sessionCreated(HttpSessionEvent se){
    HttpSession session = se.getSession();
    System.out.println(“session已经建立,id号是”+session.getId());
  }
 public void sessionDestroyed(HttpSessionEvent se){
  System.out.println(“id号是”+session.getId()+”即将失效”);
 }
}
然后不要忘记了在web.xml文件中部署该监听器,如下:
<listener>
   <listener-class>xx.MySessionListener</listener-class>
</listener>

2、HttpSessionAttributeListener
 public void attributeAdded(HttpSessionBindingEvent se)
 public void attributeRemoved(HttpSessionBindingEvent se)
 public void attributeReplaced(HttpSessionBindingEvent se)
这个监听器可以监听session中的属性被添加,修改、或删除。
session.setAttribute("zhangsan","12345");
session.setAttribute("zhangsan","67890");
public void attributeReplaced(HttpSessionBindingEvent se){
  String name = se.getName();//"zhangsan"
  String oldValue = se.getValue();//"12345"
  String newValue = (String)(se.getSession().getAttribute(name));//"67890"
}
3、HttpSessionBindingListener
 public void valueBound(HttpSessionBindingEvent event)
 public void valueUnbound(HttpSessionBindingEvent event)
这个监听器可以监听session中的属性被添加,或删除。与

HttpSessionAttributeListener不同的是它要求添加的属性要实现该接口,并且不需要

在web.xml文件中部署,如以下代码:
session.setAttribute(“zh”,new User(“zhangsan”));
Session.removeAttribute(“zh”);
public class User implements HttpSessionBindingListener {
 private String name;
 public User(String name) {
  this.name = name;
 }
 public void valueBound(HttpSessionBindingEvent arg0) {
  System.out.println("绑定了属性"+arg0.getName()+":"+arg0.getValue

().toString());
 }
 public void valueUnbound(HttpSessionBindingEvent arg0) {
   System.out.println("解除了属性"+arg0.getName());
 }
 public String toString() {
   return this.name;
 }
}
4、HttpSessionActivationListener
这个监听器也是由属性类来实现的,但它不是监听属性被添加或解除,而是监听session

对象被钝化或激活。那么什么是钝化呢?钝化就是将session对象的状态序列化成字节码

的形式,然后把这些字节码存储到硬盘上或通过网络将这些字节码传送到另外一个虚拟

机中(Java中将这一机制成为序列化)。激活就是将这些字节码恢复成对象当初的状态

的过程(反序列化)。为什么需要钝化和激活呢?一个Web服务器可以将一个session的

状态通过钝化的形式将状态保存到硬盘上,这样就能够为更多的用户提供服务,当这个

用户又需要这个session对象的时候再通过激活就可以恢复这个session的状态了。当有

多个Web服务器的时候,服务器通过负载均衡有可能将session对象的状态从一个虚拟机

传送到另外一个虚拟机,此时在一个虚拟机上钝化该session对象,而在另外一个虚拟机

上激活该对象。需要注意的是钝化和激活是需要时间的,会对你的程序性能有影响。钝

化和激活是服务器做的事情,你不能在你的程序中对session对象进行钝化,比如: 在

Tomcat6.0.14上测试
ObjectOutputStream oos = ….;
oos.writeObject(session);
 会抛出一个NotSerializableException,说StandardSessionFacade不能被序列化。
查看HttpSesion接口的定义可以看到,该接口并没有继承Serializable接口(一个对象

要想能够序列化,该对象的类必须实现Serializable接口),所以HttpSesison的具体实

现类不能被序列化也不足奇怪。但是通过查看Tomcat 的源代码可以知道,

StandardSessionFacade这个类封装了StandardSession这个实现,它是实现了

Serializable接口。其实有经验的人,一看到Facade这个词其实就差不多能猜到了。下

面写个简单的代码:
public class User implements HttpSessionActivationListener
{
 private String name;
 public User(String name) {
  this.name = name;
 }
 public void sessionWillPassivate(HttpSessionEvent se){
 System.out.println(“session将要被钝化”);
 }

 public void sessionDidActivate(HttpSessionEvent se)
  System.out.println(“session已被激活”);
 }
 public String toString() {
  return this.name;
 }
}
session.setAttribute(“zh”,new User(zhangsan));
这样当session被钝化或者被激活的时候都会通知User类对象并调用

sessionWillPassivate或者sessionDidActivate方法。注意:session被钝化或者被激活

只会通知它里面的属性。像上例如果User类即使实现了HttpSessionActivationListener

接口,而最终没有将此类对象放入session中,那么session被钝化或者激活也不会调用

该方法的。同HttpSessionBindingListener监听器一样该监听器也不需要在web.xml文件

中部署。

 

JavaWeb——监听器 一、监听器概述 1、它是一个接口,内容由我们来实现 2、它需要注册,例如注册在按钮上 3、监听器中的方法会在特殊事件发生时被调用 我们用一个简单的例子来说明监听器的工作原理: 在监听器中有三个名词:事件源,事件,监听器 比如在一个酒店里发生了打架事件,警察来捉人。 事件源:打架的人 事件:打架 监听器:警察 监听器中的方法:捉人(一个监听器可以有多个方法,对不同的事件调用不同的... 阅读详情

相关推荐

基于Ollama本地大模型的Python自动化翻译工具开发实践

本文详细介绍了如何利用Ollama本地大模型和Python开发自动化批量翻译工具。通过部署本地开源模型、设计精准提示词、处理长文本分割及多种文档格式,构建了一个兼顾隐私安全、可控性与成本效益的翻译流水线,有效解决了文档批量翻译的痛点。

yhn45678901的博客 560

Session的创建和销毁

session什么时候被创建 一个常见的错误是以为 session 在有客户端访问时就被创建,然而事实是直到某 server 端程序(如 Servlet )调用 HttpServletRequest.getSession(true) //false 不会自动创建Session 这样的语句时才会被创建。所以没有调用getSession方法则不会创建session。 要了解Session

写博客只为学习 1万+

在MacBook上直接跑Windows Server 2022:一个开发者的真实踩坑与配置全记录

本文详细记录了在MacBook上原生运行Windows Server 2022的完整流程与优化技巧。通过Boot Camp实现非虚拟机安装,开发者可以充分利用Mac硬件性能,搭建高效的本地开发环境,特别适合需要测试跨平台应用和服务器功能的场景。文章涵盖驱动处理、分区策略、Docker配置等关键步骤,为技术极客提供实用指南。

weixin_42620913的博客 247

HttpSessionListener实现类的sessionDestroyed方法中调用Service

HttpSessionListener实现类OnlineListener 用来监听用户上线与下线。有两个方法sessionCreated 和 sessionDestroyed 。用户第一次登录网址时将执行sessionCreated 创建一个session。当用户关闭浏览器时。将执行sessionDestroyed 处理一些用户下线的相关操作。 OnlineListener 中注入一个userS

mail181391907的博客 3541

ROS2仿真抓取分拣案例,使用myCobot 280机械臂结合ROS2系统搭建机械分拣站

本案例展示了如何利用myCobot 280 urdf模型构建一个对象分类站,并在ROS2 jazzy中完成运动规划。

m0_71627844的博客 2126

【DRAM存储器二】Sense Amplifier

详述DRAM颗粒中感应放大器功能、电路结构、工作原理和操作波形

highman110的博客 7204

什么情况下会调用到session_destroy()

https://segmentfault.com/q/1010000000191102 首先 ... session_destory() 是一个函数 ... 这个函数在任何情况下都不会被 php 引擎自动调用 ... 只能你手工去调用 ... php 内部存在着清理 session 的机制 ... 但与这个函数完全无关 ... 如果你想问的是什么时候该手工调用这个函数 ...答案就是在你想...

weixin_33847182的博客 376

【ATC/DTC方法第四期】GOT09-dT-tao 昼夜温度周期模型方法介绍(含Python代码实现)

GOT09-dT-tao 模型是一种经过简化和参数固定的 昼夜温度周期模型(Diurnal Temperature Cycle, DTC)。它从 GOT09 模型(Göttsche and Olesen, 2009)衍生而来,但更加轻量化,更适合在数据不足或参数估计困难的情境下使用。

WW、forever的博客 147

java中session的生命周期_session的生命周期简述,你了解session吗?

了解java语言开发的小伙伴们势必也知道session,还记得session的生命周期吗?暂时想不起来也没关系,有兴趣了解的朋友们可以跟小编一起来了解一下。想要了解session那么就一定要知道这样一个概念:session的销毁只有2种情况:1、session调用了session.invalidate()方法。2、前后两次请求超出了session指定的生命周期时间。在这当中,session的生命周...

weixin_36268722的博客 1245

SAP 管道业务(Pipeline Procurement)是用于水、电、气等不间断供应且无库存管理的物料采购场景,核心是消耗即记账、无库存持有,通过 MM-FI 集成实现实时负债与成本过账

摘要:SAP管道业务适用于水电气等无库存管理的物料采购场景,通过消耗即记账机制实现实时负债与成本过账。核心配置包括创建PIPE物料类型(无库存管理)、维护管道采购信息记录、配置自动记账科目等。SAP PO可集成外部系统实现流程自动化,如自动过账提取数据、发票校验等。实施要点在于物料主数据、信息记录和科目确定的精准配置,以及PO接口的可靠对接,最终构建端到端的高效采购与财务结算体系。

金牌架构师 748

053、坏点校正(DPC)进阶:静态坏点标定与动态坏点检测算法对比

文章摘要: 本文深入探讨了图像传感器坏点校正(DPC)技术,重点对比静态坏点标定与动态坏点检测算法。作者结合真实案例,指出静态标定在高增益场景下的局限性,并详细解析动态检测的核心算法、参数调优及常见误检问题(如边缘/纹理干扰)。提出“静态为主+动态为辅”的混合方案,强调阈值需随增益、亮度和温度自适应调整。文末总结六条工程建议,包括避免固定阈值、优先使用中值替换、定期更新坏点表等,强调DPC是图像质量的基础防线,需结合传感器特性综合优化。

zzfmlxs的博客 265

与HttpSession相关的监听器

概述 与HttpSession相关的监听器有四个:分别是HttpSessionListener、HttpSessionAttributeListener、HttpSessionBindingListener与HttpSessionActivationListener。 HttpSessionListener HttpSessionListener是“生命周期监听器”,在Http...

atu99602的博客 448

LFI Scanner 本地文件包含漏洞扫描、文件路径遍历、敏感文件读取(etcpasswd)

✅ **敏感文件读取验证**:内置`/etc/passwd、/windows/system32/drivers/etc/hosts、phpinfo.php`等敏感文件字典,一键验证漏洞可利用性;🔴 **Windows**:`/windows/win.ini`(系统配置)、`/windows/system32/drivers/etc/hosts`;🔴 **Linux**:`/etc/passwd`(用户信息)、`/proc/version`(内核版本)、`/etc/hosts`(域名解析);

寒寒豆豆软件公司的博客 130

java session监听器_javaWeb:HttpSession的监听器

还有两个与HttpSession相关的特殊的监听器,这两个监听器的特点如下:l 不用在web.xml文件中部署;l 这两个监听器不是给session添加,而是给Bean添加。即让Bean类实现监听器接口,然后再把Bean对象添加到session域中。下面对这两个监听器介绍一下:l HttpSessionBindingListener:当某个类实现了该接口后,可以感知本类对象添加到sessi...

weixin_26997697的博客 303

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

JavaWeb监听器

监听器: 它是一个接口,内容由我们来实现; 它需要注册,例如注册在按钮上! 监听器中的方法,会在特殊事件发生时被调用! 监听器可以分为三种类型: 1、监听对象的创建: ServletContext:主要监听servletContext的创建,需要实现ServeltContextListener接口 ServletContext生命周期监听: ServletContextListener,它有两...

Soul_Ming的博客 1067

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Session,监听器

day20 JavaWeb监听器 三大组件: Servlet Listener Filter Listener:监听器 1.初次相见:AWT 2.二次相见:SAX 监听器: 它是一个接口,内容由我们来实现; 它需要注册,例如注册在按钮上! 监听器中的方法,会在特殊事件发生时被调用! 观察者: 事件源; 小偷 事件; 偷东西 监听器; 警察 监听器中的方法:抓捕 JavaWeb中的监听器 事件源:三大域! ServletContext 生命周期监听:ServletConte

qq_45745451的博客 223

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

java中监听器_JavaWeb中监听器

1、HttpSessionBindingListener:当某个类实现了该接口后,可以感知本类对象添加到session中,以及感知从session中移除。HttpSessionBindingListener:添加到javabean上,javabean就知道自己是否添加到session中了。例如让Person类实现HttpSessionBindingListener接口,那么当把Person对象添加...

weixin_34489089的博客 174

监听器

学习参考:黑马程序员 监听器Listener javaEE包括13门规范 在课程中主要学习 servlet技术 和 jsp技术 其中 servlet规范包括三个技术点:servlet listener filter 什么是监听器? 监听器就是监听某个对象的的状态变化的组件 监听器的相关概念: 事件源:被监听的对象 ----- 三个域对象 request session servletContext 监听器:监听事件源对象 事件源对象的状态的变化都会触发监听器 ---- 6+2 注...

星宇非凡 3883

与HttpSession有关的四个监听器之间的区别

与HttpSession有关的四个监听器之间的区别简介:HttpSession常用的四个监听器HttpSessionBindingListener,HttpSessoinActivationListener,HttpSessionListener和HttpSessionAttributeListener的区别 一、HttpSessionListener和HttpSessionAttributeLi...

弱弱的猿 3122

java监听器详解_JavaWeb监听器详解

1 JavaWeb监听器概述在JavaWeb被监听的事件源为:ServletContext、HttpSession、ServletRequest,即三大域对象。有监听域对象“创建”与“销毁”的监听器,监听域对象“操作域属性”的监听器,监听HttpSession的监听器。2 创建与销毁监听器创建与销毁监听器一共有三个:ServletContextListener:Tomcat启动和关闭时调用下面两个...

weixin_31520593的博客 428

java 监听器

最开始理解java监听器的时候我有这些疑问! java监听器监听的内容是什么?监听器作用在哪个事件上?是在哪配置的监听内容的? 就带着这些问题理解一下java监听器吧! 首先,监听器要怎么实现? Java事件由事件类和监听接口组成,自定义一个事件前,必须提供一个事件的监听接口以及一个事件类。JAVA中监听接口是继承java.util.EventListener的类,事件类继承java.uti...

小汤圆的博客 8936

11---Listener监听器

Listener介绍: 1.监听器: Javaweb中的监听器是用于监听web常见对象HttpServletRequest,HttpSession,ServletContext 监听器的作用 1.监听web对象创建与销毁. 2.监听web对象的属性变化 3.监听session绑定javaBean操作. 监听机制相关概念 1.事件----一件事情 2.事件源—产生这件事情的源头 3.注册监听—将监听器与事件绑定,当事件产生时,监听器可以知道,并进行处理。 4.监听器—对某件事情进行处理监听的一个

PENTD的博客 605

Java web----监听器

1 JavaWeb监听器概述 在JavaWeb被监听的事件源为:ServletContext、HttpSession、ServletRequest,即三大域对象。 监听域对象“创建”与“销毁”的监听器;监听域对象“操作域属性”的监听器;监听HttpSession的监听器。 2 创建与销毁监听器 创建与销毁监听器一共有三个: ServletContextListener

bluzelee2011的专栏 769

Java监听器(详解)

本节主要讲解Java的监听器,从其定义、创建、三大类别、session的钝化活化及面试题等多个方面帮助理解监听器

yjp1240201821的博客 1000
下一篇: HttpSession , HttpSessionListener , HttpSessionBindingListener , HttpSessionAtributeListener【转】
麻烦的书虫
博客等级 码龄17年 19粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值