当前位置: 首页 > news >正文

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.基本介绍

image-20240130202508504

2.ServletContextListener

1.基本介绍

image-20240131093951998

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

image-20240131094929759

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.结果

image-20240131100010479

3.ServletContextAttributeListener监听器

1.基本介绍

image-20240131100225983

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.结果

image-20240131101308052

image-20240131101302940

4.HttpSessionListener

1.基本介绍

image-20240131101348911

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.结果

image-20240131102317745

image-20240131102326737

5.HttpSessionAttributeListener

1.基本介绍

image-20240131102439991

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.结果

image-20240131103158921

image-20240131103208491

6.ServletRequestListener

1.基本介绍

image-20240131103332588

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.结果

image-20240131104433136

7.其他监听器

image-20240131104514536

image-20240131104626388

8.监听器小结

1.创建监听器
1.基本概念

image-20240131094929759

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

image-20240131093951998

3.ServletContextAttributeListener

image-20240131100225983

4.HttpSessionListener

image-20240131101348911

5.HttpSessionAttributeListener

image-20240131101348911

6.ServletRequestListener

image-20240131103332588

相关文章:

JavaWeb-监听器

文章目录 1.基本介绍2.ServletContextListener1.基本介绍2.创建maven项目&#xff0c;导入依赖3.代码演示1.实现ServletContextListener接口2.配置web.xml3.结果 3.ServletContextAttributeListener监听器1.基本介绍2.代码实例1.ServletContextAttributeListener.java2.配置web…...

系统架构设计基础知识

一. 系统架构概述系统架构的定义 系统架构&#xff08;System Architecture&#xff09;是系统的一种整体的高层次的结构表示&#xff0c;是系统的骨架和根基&#xff0c;支撑和链接各个部分&#xff0c;包括构件、连接件、约束规范以及指导这些内容设计与演化的原理&#xff0…...

Vue自定义指令介绍及使用方法

介绍​ 除了 Vue 内置的一系列指令 (比如 v-model 或 v-show) 之外&#xff0c;Vue 还允许你注册自定义的指令 (Custom Directives)。 之前已经介绍了两种在 Vue 中重用代码的方式&#xff1a;组件 和 组合式函数。组件是主要的构建模块&#xff0c;而组合式函数则侧重于有状态…...

React 组件生命周期函数的用法和示例代码

React 中的生命周期函数可以分为三个阶段&#xff1a;Mounting&#xff08;挂载&#xff09;&#xff0c;Updating&#xff08;更新&#xff09;和 Unmounting&#xff08;卸载&#xff09;。每个阶段都有不同的函数&#xff0c;用于执行不同的操作。 Mounting&#xff08;挂载…...

【nginx运维】[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)

关于nginx端口被占用的问题&#xff1a; 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是最近非常火的技术&#xff0c;两大著名前端框架React和Vue都使用了虚拟DOM&#xff0c;所以我觉得非常有必要结合浏览器的工作机制对虚拟DOM进行一次分析。当然了&#xff0c;React和Vue框架本身所蕴含的知识点非常多&#xff0c;而且也不是我们专栏的重点&#xff0c…...

arm工作模式、arm9通用寄存器、异常向量表中irq的异常向量、cpsr中的哪几位是用来设置工作模式以及r13,r14,15别名是什么?有什么作用?

ARM 首先先介绍一下ARM公司。 ARM成立于1990年11月&#xff0c;前身为Acorn计算机公司 主要设计ARM系列RISC处理器内核 授权ARM内核给生产和销售半导体的合作伙伴ARM公司不生产芯片 提供基于ARM架构的开发设计技术软件工具评估版调试工具应用软件总线架构外围设备单元等等CPU中…...

电脑上音频太多,播放速度又不一致,如何批量调节音频播放速度?

批量调节音频速度是现代音频处理中的一个重要环节&#xff0c;尤其在音乐制作、电影剪辑、有声书制作等领域&#xff0c;它能够帮助制作者快速高效地调整音频的播放速度&#xff0c;从而满足特定的制作需求。本文将详细介绍批量调节音频速度的方法、技巧和注意事项&#xff0c;…...

pe格式从入门到图形化显示(十)-扩展最后一个节

文章目录 前言一、怎么扩展最后一个节&#xff1f;二、扩大节1.扩展节2.保存文件 前言 通过分析和解析Windows PE格式&#xff0c;并使用qt进行图形化显示 一、怎么扩展最后一个节&#xff1f; 在PE文件中&#xff0c;扩大最后一个节通常是通过修改PE文件头中的节表来实现的。…...

设计模式之创建型模式---建造者模式

文章目录 建造者模式概述经典的建造者模式建造者模式的变种总结 建造者模式概述 建造者模式是一种广泛使用的设计模式&#xff0c;在三方开源库和各种SDK中经常见到。建造者设计模式在四人帮的经典著作《设计模式&#xff1a;可复用面向对象软件基础》中被提及&#xff0c;它的…...

如何从零开始训练一个语言模型

如何从零开始训练一个语言模型 #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

基本要求&#xff1a;每做一件事&#xff0c;软件就会按照事情权重加相应的分数&#xff0c;总分数也会增加&#xff0c;要可视化页面 使用Python编写的一个简单的日常任务记录和评分系统,包括可视化页面。 首先,我们定义一个任务字典,其中包含各种日常任务及其对应的权重分数…...

商家转账到零钱权限开通操作攻略

商家转账到零钱是什么&#xff1f; 商家转账到零钱是微信商户号里的一个功能&#xff0c;很早以前叫企业付款到零钱。 从2022年5月18日&#xff0c;原“企业付款到零钱”升级为“商家转账到零钱”&#xff0c;已开通商户的功能使用暂不受影响&#xff0c;新开通商户可前往「产…...

【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 通…...

数据结构—堆

什么是堆 堆是一种特殊的树形结构&#xff0c;其中每个节点都有一个值。堆可以分为两种类型&#xff1a;最大堆和最小堆。在最大堆中&#xff0c;每个节点的值都大于等于其子节点的值&#xff1b;而在最小堆中&#xff0c;每个节点的值都小于等于其子节点的值。这种特性使得堆…...

Kubernetes学习笔记8

Kubernetes集群客户端工具kubectl 我们已经能够部署Kubernetes了&#xff0c;那么我们如何使用Kubernetes集群运行企业的应用程序呢&#xff1f;那么&#xff0c;我们就需要使用命令行工具kubectl。 kubectl就是控制Kubernetes的驾驶舱&#xff0c;它允许你执行所有可能的Kube…...

[渗透利器]在线渗透测试工具箱?测评

前言 hxd更新完了在线工具箱&#xff0c;受邀写一下使用体验以及测评 使用体验 这个工具箱设计的比较轻便&#xff0c;以往用过的工具箱大多都是以离线打包的方式发布&#xff0c;该工具箱&#xff0c;作者自己掏钱自己买服务器&#xff0c;自己买带宽&#xff0c;先生大义。…...

rocketmq和rabbitmq总是分不清?

1. 官方解答 摘自百度搜索&#xff1a; 2. 通俗易懂的回答...

利用Python ARM网关仓储物流AGV小车控制器

在现代智慧物流体系中&#xff0c;高效的信息管理系统是物流中心实现精准跟踪货物、科学管理库存及优化配送路线的关键环节。通过采用ARM架构的工控机或网关&#xff0c;并结合Python的二次开发能力&#xff0c;可以有效集成并强化物流管理系统的数据处理与通信功能&#xff0c…...

Transformer详解和知识点总结

目录 1. 注意力机制1.1 注意力评分函数1.2 多头注意力&#xff08;Multi-head self-attention&#xff09; 2. Layer norm3. 模型结构4. Attention在Transformer中三种形式的应用 论文&#xff1a;https://arxiv.org/abs/1706.03762 李沐B站视频&#xff1a;https://www.bilibi…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...