06 监听器

文章目录

    • SessionAttListenerDemo.java
    • SessionListenerDemo.java
    • ProductController.java

SessionAttListenerDemo.java


package com.aistart.listener;import javax.servlet.ServletContext;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;/*
* 使用步骤
* 1. 实现对应的Listener
* 2. 重写接口函数,监听对应的功能
* 3. 配置  @WebListener*
* */
@WebListener
public class SessionAttListenerDemo implements HttpSessionAttributeListener {@Overridepublic void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) {System.out.println("增加值");}@Overridepublic void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) {System.out.println("删除值");}@Overridepublic void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) {System.out.println("修改值");}
}

SessionListenerDemo.java


package com.aistart.listener;import javax.servlet.ServletContext;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;/*
* 使用步骤
* 1. 实现对应的Listener
* 2. 重写接口函数,监听对应的功能
* 3. 配置  @WebListener*
* */
@WebListener
public class SessionListenerDemo implements HttpSessionListener {private int OnlineUserNumber = 0;@Overridepublic void sessionCreated(HttpSessionEvent httpSessionEvent) {System.out.println("seesion创建并调用监听");//通过事件获取sessionServletContext servletContext = httpSessionEvent.getSession().getServletContext();this.OnlineUserNumber++;servletContext.setAttribute("userNumber",this.OnlineUserNumber);}@Overridepublic void sessionDestroyed(HttpSessionEvent httpSessionEvent) {System.out.println("seesion销毁并调用监听");//通过事件获取sessionServletContext servletContext = httpSessionEvent.getSession().getServletContext();this.OnlineUserNumber--;servletContext.setAttribute("userNumber",this.OnlineUserNumber);}
}

ProductController.java


package com.aistart.controller;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;@WebServlet({"/product/init","/product/add","/product/del"})
public class ProductController extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.先看有没有登录状态/*这个部分我们就可以放在过滤器中操作*/System.out.println("我开始操作了");Object userNumber = req.getServletContext().getAttribute("userNumber");System.out.println("当前在线人数"+userNumber);}
}

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

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

相关文章

Tensorboard使用教程

Pytorch(九) —— Tensorboard(当有了tensorboard日志文件怎么可视化它)(同时显示多个模型)(vscode的tensorboard)(TensorboardX)_tensorboard --logdir-CSDN博客文章浏览阅读9.7k次,点赞10次,收藏56次。tensorboard.pyfrom tensorboardX import Summary…

NVIDIA Jetson Xavier NX增加swap分区大小

NVIDIA Jetson Xavier NX增加swap分区大小 1. 输入jtop查看swap空间大小 2. 依次输入命令 #1)新增swapfile文件大小自定义 sudo fallocate -l 6G /var/swapfile #2)配置该文件的权限 sudo chmod 600 /var/swapfile #3)建立交换分区 sudo m…

最大子数组和-动态规划

53. 最大子数组和 问题:最大子数组和,找出数组中具有最大和的连续子数组。 思路: 暴力解法:通过两重循环遍历,得到所有子数组和。时间和空间复杂度都为O(n^2): class Solution {public int maxSubArray(int[] nums…

RuntimeError: Error compiling objects for extension虚拟环境和系统环境——添加、删除、修改环境变量

前言:因为一个报错RuntimeError: Error compiling objects for extension 没有配置cl.exe环境变量,我的应用场景是需要搞定虚拟环境变量配置 RuntimeError: Error compiling objects for extension手把手带你解决(超详细)-CSDN博…

爬虫 红网时刻 获取当月指定关键词新闻 并存储到CSV文件

目标网站:红网 爬取目的:为了获取某一地区更全面的在红网已发布的宣传新闻稿,同时也让自己的工作更便捷 环境:Pycharm2021,Python3.10, 安装的包:requests,csv,bs4&…

如何在pgAdmin中用替换的值更新jsonb列?(二)

上一篇提到怎么替换jsonb,链接如下: 如何在pgAdmin中用替换的值更新jsonb列?-CSDN博客 那么当jsonb嵌套jsonb应该怎么替换呢?像这样,类型依然是jsonb,只不过嵌套一层,JsonData:&qu…

网络安全 | 什么是DDoS攻击?

关注WX:CodingTechWork DDoS-介绍 DoS:Denial of Service,拒绝服务。DDoS是通过大规模的网络流量使得正常流量不能访问受害者目标,是一种压垮性的网络攻击,而不是一种入侵手段。NTP网络时间协议,设备需要…

Springboot整合Milvus向量库

1. Milvus的Maven依赖&#xff0c; 配置如下 <dependency><groupId>io.milvus</groupId><artifactId>milvus-sdk-java</artifactId><version>2.3.4</version><exclusions><exclusion><artifactId>log4j-slf4j-imp…

百度语音识别

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、建号—获取试用KEY二、测试代码三、运行四、运行结果五、验证五、总结 一、建号—获取试用KEY https://console.bce.baidu.com/ai/#/ai/speech/overview/index…

Tomcat部署及安全加固

一、安装步骤 tomcat版本(8.5.81)&#xff1a; tar -zxvf apache-tomcat-8.5.81.tar.gz -C /app/ cd /app/ mv apache-tomcat-8.5.81/ tomcat/ chown -R webapp:app /app/tomcat二、安全加固 1. 禁止默认页面登录 rm -rf /app/tomcat/webapps mkdir -p /app/tomcat/webapps2…

阿里云python-SDK配置

OSS管理控制台 (aliyun.com) SDK地址 GitHub - aliyun/aliyun-oss-python-sdk: Aliyun OSS SDK for Python 下载文件并运行 python setup.py install oss2包配置完成。 上传、下载开发文档&#xff1a; Python SDK快速入门_对象存储(OSS)-阿里云帮助中心 (aliyun.com)

mybatis-plus-join,一个可以让mybatis-plus实现联表的插件

mybatis-plus-join mybatis-plus-join是mybatis plus的一个多表插件&#xff0c;上手简单&#xff0c;十分钟不到就能学会全部使用方式&#xff0c;只要会用mp就会用这个插件&#xff0c;仅仅依赖了lombok&#xff0c;而且是扩展mp的构造器并非更改原本的构造器&#xff0c;不会…

记一次Cannot deploy POJO class [xxx$$EnhancerBySpringCGLIB$$xxx]的错误

最近项目上需要使用websocket做服务端&#xff0c;那好说啊&#xff0c;直接springboot集成的websocket 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId><versi…

赛氪网在长沙宣布启动“徽文化外宣翻译大赛”

2024年3月30日下午&#xff0c;在美丽的星城长沙&#xff0c;赛氪网作为承办方&#xff0c;在中国翻译协会年会期间成功举办了备受瞩目的“AI科技时代竞赛与就业分论坛”。此次论坛汇聚了众多翻译界、科技界和教育界的专家学者&#xff0c;共同就科技、实践、就业与竞赛人才培养…

一些关于机器学习的练习

为了加深机器学习基础并通过实践学习&#xff0c;收集了以下练习&#xff0c;覆盖了从数据探索、预处理到模型构建和评估的整个流程。这些练习按照机器学习的主要类型分为三部分&#xff1a;监督学习、无监督学习和强化学习。 监督学习练习 房价预测&#xff08;线性回归&…

使用C++调用讯飞星火API的详细指南

正文&#xff1a; 科大讯飞是中国领先的人工智能公司&#xff0c;其讯飞星火API为开发者提供了丰富的接口和服务&#xff0c;支持各种语音和语言技术的应用。下面是使用C接入讯飞星火API的步骤和代码示例。 步骤一&#xff1a;注册账号并创建应用 首先&#xff0c;您需要访问科…

蓝色wordpress外贸建站模板

蓝色wordpress外贸建站模板 https://www.mymoban.com/wordpress/7.html

ES 7.12官网阅读-ILM(index lifecycle management)

官网文档&#xff1a;ILM: Manage the index lifecycle | Elasticsearch Guide [7.12] | Elastic ILM&#xff1a;管理 index 的生命周期 可以根据你的性能、弹性、保存时长需求&#xff0c;使用ILM策略来自动管理你的index&#xff1b;比如 1. 当一个index达到确定的大小&a…

保护你的 Java 代码:深入了解代码混淆

在当今数字化时代&#xff0c;软件开发领域竞争激烈&#xff0c;而保护你的代码免受恶意攻击和盗用是至关重要的。代码混淆是一种常用的技术&#xff0c;用于增加攻击者分析和逆向工程代码的难度&#xff0c;从而提高代码的安全性。本文将介绍代码混淆的基本概念和详细办法&…

element-ui badge 组件源码分享

今日简单分享 badge 组件的源码实现&#xff0c;主要从以下两个方面&#xff1a; 1、badge 组件页面结构 2、badge 组件属性 一、badge 组件页面结构 二、badge 组件属性 补充几个标签的用途&#xff1a; sub&#xff1a;下标、sup&#xff1a;上标、var 变量 代码如下&am…