JavaWeb-监听器
文章目录
- 1.基本介绍
- 2.ServletContextListener
- 1.基本介绍
- 2.创建maven项目,导入依赖
- 3.代码演示
- 1.实现ServletContextListener接口
- 2.配置web.xml
- 3.结果
- 3.ServletContextAttributeListener监听器
- 1.基本介绍
- 2.代码实例
- 1.ServletContextAttributeListener.java
- 2.配置web.xml
- 3.创建servlet演示
- 4.结果
- 4.HttpSessionListener
- 1.基本介绍
- 2.代码实例
- 1.HttpSessionListener.java
- 2.配置web.xml
- 3.创建servlet演示
- 4.结果
- 5.HttpSessionAttributeListener
- 1.基本介绍
- 2.代码实例
- 1.HttpSessionAttributeListener.java
- 2.配置web.xml
- 3.创建servlet演示
- 4.结果
- 6.ServletRequestListener
- 1.基本介绍
- 2.代码实例
- 1.ServletRequestListener.java
- 2.配置web.xml
- 3.结果
- 7.其他监听器
- 8.监听器小结
- 1.创建监听器
- 1.基本概念
- 2.创建方法
- 2.ServletContextListener
- 3.ServletContextAttributeListener
- 4.HttpSessionListener
- 5.HttpSessionAttributeListener
- 6.ServletRequestListener
1.基本介绍

2.ServletContextListener
1.基本介绍

2.创建maven项目,导入依赖
<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version></dependency>
3.代码演示
1.实现ServletContextListener接口

package listener;import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;/*** @author 孙显圣* @version 1.0*/
public class ServletContextListener implements javax.servlet.ServletContextListener {public void contextInitialized(ServletContextEvent servletContextEvent) {ServletContext servletContext = servletContextEvent.getServletContext();System.out.println("监听到servletContext创建");}public void contextDestroyed(ServletContextEvent servletContextEvent) {ServletContext servletContext = servletContextEvent.getServletContext();System.out.println("监听到servletContext销毁 ");}
}
2.配置web.xml
<listener><listener-class>listener.ServletContextListener</listener-class></listener>
3.结果

3.ServletContextAttributeListener监听器
1.基本介绍

2.代码实例
1.ServletContextAttributeListener.java
package listener;import javax.servlet.ServletContextAttributeEvent;/*** @author 孙显圣* @version 1.0*/
public class ServletContextAttributeListener implements javax.servlet.ServletContextAttributeListener {public void attributeAdded(ServletContextAttributeEvent servletContextAttributeEvent) {System.out.println("ServletContextAttributeListener监听到添加属性" + servletContextAttributeEvent.getName()+ servletContextAttributeEvent.getValue());}public void attributeRemoved(ServletContextAttributeEvent servletContextAttributeEvent) {System.out.println("ServletContextAttributeListener监听到删除属性" + servletContextAttributeEvent.getName()+ servletContextAttributeEvent.getValue());}public void attributeReplaced(ServletContextAttributeEvent servletContextAttributeEvent) {System.out.println("ServletContextAttributeListener监听到修改属性" + servletContextAttributeEvent.getName()+ servletContextAttributeEvent.getValue());}
}
2.配置web.xml
<listener><listener-class>listener.ServletContextAttributeListener</listener-class></listener>
3.创建servlet演示
package servlet;import javax.servlet.ServletContext;
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 java.io.IOException;/*** @author 孙显圣* @version 1.0*/
@WebServlet(urlPatterns = "/modify")
public class modifyServletContextAttribute extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ServletContext servletContext = super.getServletContext();//添加servletContext.setAttribute("name","孙显圣");//替换servletContext.setAttribute("name","李白");//删除servletContext.removeAttribute("name");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}
4.结果


4.HttpSessionListener
1.基本介绍

2.代码实例
1.HttpSessionListener.java
package listener;import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;/*** @author 孙显圣* @version 1.0*/
public class HttpSessionListener implements javax.servlet.http.HttpSessionListener {public void sessionCreated(HttpSessionEvent httpSessionEvent) {HttpSession session = httpSessionEvent.getSession();System.out.println("HttpSessionListener监听到session创建id为" + session.getId());}public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {HttpSession session = httpSessionEvent.getSession();System.out.println("HttpSessionListener监听到session销毁id为" + session.getId());}
}
2.配置web.xml
<listener><listener-class>listener.HttpSessionListener</listener-class></listener>
3.创建servlet演示
package servlet;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;/*** @author 孙显圣* @version 1.0*/
@WebServlet(urlPatterns = "/modifySession")
public class modifySession extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//创建sessionHttpSession session = req.getSession();//删除sessionsession.invalidate();}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}
4.结果


5.HttpSessionAttributeListener
1.基本介绍

2.代码实例
1.HttpSessionAttributeListener.java
package listener;import javax.servlet.http.HttpSessionBindingEvent;/*** @author 孙显圣* @version 1.0*/
public class HttpSessionAttributeListener implements javax.servlet.http.HttpSessionAttributeListener {public void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) {String name = httpSessionBindingEvent.getName();System.out.println("监听到session创建属性:" + name);}public void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) {String name = httpSessionBindingEvent.getName();System.out.println("监听到session删除属性:" + name);}public void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) {String name = httpSessionBindingEvent.getName();System.out.println("监听到session替换属性:" + name);}
}
2.配置web.xml
<listener><listener-class>listener.HttpSessionAttributeListener</listener-class></listener>
3.创建servlet演示
package servlet;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;/*** @author 孙显圣* @version 1.0*/
@WebServlet(urlPatterns = "/modifySessionAttribute")
public class modifySessionAttribute extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {HttpSession session = req.getSession();session.setAttribute("name","孙显圣");session.setAttribute("name","李白");session.removeAttribute("name");}
}
4.结果


6.ServletRequestListener
1.基本介绍

2.代码实例
1.ServletRequestListener.java
package listener;import javax.servlet.ServletRequest;
import javax.servlet.ServletRequestEvent;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;/*** @author 孙显圣* @version 1.0*/
public class ServletRequestListener implements javax.servlet.ServletRequestListener {public void requestDestroyed(ServletRequestEvent servletRequestEvent) {System.out.println("ServletRequestListener 监听到 request对象销毁");}public void requestInitialized(ServletRequestEvent servletRequestEvent) {System.out.println("ServletRequestListener 监听到 request对象创建");ServletRequest servletRequest = servletRequestEvent.getServletRequest();//可以向下转型为HttpServletRequest,获取更多信息System.out.println("访问ip:" + servletRequest.getRemoteAddr());System.out.println("访问资源:" + ((HttpServletRequest)servletRequest).getRequestURL());}
}
2.配置web.xml
<listener><listener-class>listener.ServletRequestListener</listener-class></listener>
3.结果

7.其他监听器


8.监听器小结
1.创建监听器
1.基本概念

2.创建方法
- 实现接口,进行相应操作
- 配置web.xml(告诉tomcat)
2.ServletContextListener

3.ServletContextAttributeListener

4.HttpSessionListener

5.HttpSessionAttributeListener

6.ServletRequestListener

相关文章:
JavaWeb-监听器
文章目录 1.基本介绍2.ServletContextListener1.基本介绍2.创建maven项目,导入依赖3.代码演示1.实现ServletContextListener接口2.配置web.xml3.结果 3.ServletContextAttributeListener监听器1.基本介绍2.代码实例1.ServletContextAttributeListener.java2.配置web…...
系统架构设计基础知识
一. 系统架构概述系统架构的定义 系统架构(System Architecture)是系统的一种整体的高层次的结构表示,是系统的骨架和根基,支撑和链接各个部分,包括构件、连接件、约束规范以及指导这些内容设计与演化的原理࿰…...
Vue自定义指令介绍及使用方法
介绍 除了 Vue 内置的一系列指令 (比如 v-model 或 v-show) 之外,Vue 还允许你注册自定义的指令 (Custom Directives)。 之前已经介绍了两种在 Vue 中重用代码的方式:组件 和 组合式函数。组件是主要的构建模块,而组合式函数则侧重于有状态…...
React 组件生命周期函数的用法和示例代码
React 中的生命周期函数可以分为三个阶段:Mounting(挂载),Updating(更新)和 Unmounting(卸载)。每个阶段都有不同的函数,用于执行不同的操作。 Mounting(挂载…...
【nginx运维】[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
关于nginx端口被占用的问题: If you get following error, when you try to start nginx… [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use) Then it means nginx or some other process is already using port 80. You can kill it using: su…...
浏览器工作原理与实践--虚拟DOM:虚拟DOM和实际的DOM有何不同
虚拟DOM是最近非常火的技术,两大著名前端框架React和Vue都使用了虚拟DOM,所以我觉得非常有必要结合浏览器的工作机制对虚拟DOM进行一次分析。当然了,React和Vue框架本身所蕴含的知识点非常多,而且也不是我们专栏的重点,…...
arm工作模式、arm9通用寄存器、异常向量表中irq的异常向量、cpsr中的哪几位是用来设置工作模式以及r13,r14,15别名是什么?有什么作用?
ARM 首先先介绍一下ARM公司。 ARM成立于1990年11月,前身为Acorn计算机公司 主要设计ARM系列RISC处理器内核 授权ARM内核给生产和销售半导体的合作伙伴ARM公司不生产芯片 提供基于ARM架构的开发设计技术软件工具评估版调试工具应用软件总线架构外围设备单元等等CPU中…...
电脑上音频太多,播放速度又不一致,如何批量调节音频播放速度?
批量调节音频速度是现代音频处理中的一个重要环节,尤其在音乐制作、电影剪辑、有声书制作等领域,它能够帮助制作者快速高效地调整音频的播放速度,从而满足特定的制作需求。本文将详细介绍批量调节音频速度的方法、技巧和注意事项,…...
pe格式从入门到图形化显示(十)-扩展最后一个节
文章目录 前言一、怎么扩展最后一个节?二、扩大节1.扩展节2.保存文件 前言 通过分析和解析Windows PE格式,并使用qt进行图形化显示 一、怎么扩展最后一个节? 在PE文件中,扩大最后一个节通常是通过修改PE文件头中的节表来实现的。…...
设计模式之创建型模式---建造者模式
文章目录 建造者模式概述经典的建造者模式建造者模式的变种总结 建造者模式概述 建造者模式是一种广泛使用的设计模式,在三方开源库和各种SDK中经常见到。建造者设计模式在四人帮的经典著作《设计模式:可复用面向对象软件基础》中被提及,它的…...
如何从零开始训练一个语言模型
如何从零开始训练一个语言模型 #mermaid-svg-gtUlIrFtNPw1oV5a {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-gtUlIrFtNPw1oV5a .error-icon{fill:#552222;}#mermaid-svg-gtUlIrFtNPw1oV5a .error-text{fill:#5522…...
Python 设计一个监督自己的软件1
基本要求:每做一件事,软件就会按照事情权重加相应的分数,总分数也会增加,要可视化页面 使用Python编写的一个简单的日常任务记录和评分系统,包括可视化页面。 首先,我们定义一个任务字典,其中包含各种日常任务及其对应的权重分数…...
商家转账到零钱权限开通操作攻略
商家转账到零钱是什么? 商家转账到零钱是微信商户号里的一个功能,很早以前叫企业付款到零钱。 从2022年5月18日,原“企业付款到零钱”升级为“商家转账到零钱”,已开通商户的功能使用暂不受影响,新开通商户可前往「产…...
【DAC‘ 2022】Kite: A Family of Heterogeneous Interposer Topologies
Kite: A Family of Heterogeneous Interposer Topologies Enabled via Accurate Interconnect Modeling 背景和动机 背景动机 工作内容 KITE 拓扑 实验方法和评估结果 Kite: A Family of Heterogeneous Interposer Topologies Enabled via Accurate Interconnect Modeling 通…...
数据结构—堆
什么是堆 堆是一种特殊的树形结构,其中每个节点都有一个值。堆可以分为两种类型:最大堆和最小堆。在最大堆中,每个节点的值都大于等于其子节点的值;而在最小堆中,每个节点的值都小于等于其子节点的值。这种特性使得堆…...
Kubernetes学习笔记8
Kubernetes集群客户端工具kubectl 我们已经能够部署Kubernetes了,那么我们如何使用Kubernetes集群运行企业的应用程序呢?那么,我们就需要使用命令行工具kubectl。 kubectl就是控制Kubernetes的驾驶舱,它允许你执行所有可能的Kube…...
[渗透利器]在线渗透测试工具箱?测评
前言 hxd更新完了在线工具箱,受邀写一下使用体验以及测评 使用体验 这个工具箱设计的比较轻便,以往用过的工具箱大多都是以离线打包的方式发布,该工具箱,作者自己掏钱自己买服务器,自己买带宽,先生大义。…...
rocketmq和rabbitmq总是分不清?
1. 官方解答 摘自百度搜索: 2. 通俗易懂的回答...
利用Python ARM网关仓储物流AGV小车控制器
在现代智慧物流体系中,高效的信息管理系统是物流中心实现精准跟踪货物、科学管理库存及优化配送路线的关键环节。通过采用ARM架构的工控机或网关,并结合Python的二次开发能力,可以有效集成并强化物流管理系统的数据处理与通信功能,…...
Transformer详解和知识点总结
目录 1. 注意力机制1.1 注意力评分函数1.2 多头注意力(Multi-head self-attention) 2. Layer norm3. 模型结构4. Attention在Transformer中三种形式的应用 论文:https://arxiv.org/abs/1706.03762 李沐B站视频:https://www.bilibi…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving
地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...
