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

监听器——监听着我们WEB项目中的域对象

监听器 ——它监听着我们WEB项目中的域对象 何时被创建被销毁

ServlertContextListener——它监听ServletContext对象的创建和销毁

contextInitialized 创建的时候会调用 Tomcat启动时调用

contextDestroyed销毁的时候自动会调用的方法 Tomcat终止

这两个方法中携带的参数ServletContextEvent可以获取当前ServletContext对象

注意:每个监听器都需要在web.xml中配置标签

  <listener><listener-class>com.iweb.test.HelloListener</listener-class></listener>
package com.iweb.test;import javax.servlet.Servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;public class HelloListener implements ServletContextListener {//初始化@Overridepublic void contextInitialized(ServletContextEvent sce) {ServletContext sc=sce.getServletContext();sc.setAttribute("myAplicationKey","myAplicationValue");System.out.println("当前ServletContext对象创建");}
//销毁@Overridepublic void contextDestroyed(ServletContextEvent sce) {ServletContext sc= sce.getServletContext();System.out.println(sc.getAttribute("myAplicationKey"));System.out.println("当前ServletContext对象被销毁");}
}

执行结果:

关浏览器会话只是不能用了,不是被销毁了

2.HttpSessionListener——这是HttpSession的监听器,监听着一个会话什么时候被创建,什么时候被销毁

sessionCreated()————创建的方法

sessionDestroyed()————销毁的方法

HttpSessionListener 是 Java EE 的一个接口,用于监听 HTTP 会话的创建和销毁事件。它允许你在会话的生命周期内执行特定的操作,比如初始化或清理资源。

主要方法
sessionCreated(HttpSessionEvent se):
当一个新的 HTTP 会话被创建时调用。你可以在这里进行初始化操作,如设置默认属性。

@Override
public void sessionCreated(HttpSessionEvent se) {System.out.println("Session created: " + se.getSession().getId());
}
sessionDestroyed(HttpSessionEvent se):


当一个 HTTP 会话被销毁时调用。你可以在这里执行清理操作,如释放资源。

@Override
public void sessionDestroyed(HttpSessionEvent se) {System.out.println("Session destroyed: " + se.getSession().getId());
}


配置
要使用 HttpSessionListener,你需要在 web.xml 文件中配置它:

<listener><listener-class>com.example.SessionListener</listener-class>
</listener>


在这个例子中,SessionListener 是实现了 HttpSessionListener 接口的类。

3、ServletRequestListener——这是ServletRequest的监听器,监听着一个请求什么时候被创建,什么时候被销毁

requestInitialized()——创建的方法

requestDestroyed()——销毁的方法

ServletRequestListener 是 Java Servlet API 提供的一个接口,用于监听和处理 Servlet 请求的创建和销毁事件。它允许你在请求生命周期内执行特定操作,比如记录请求信息或进行资源管理。

主要方法
requestInitialized(ServletRequestEvent sre):
当一个 ServletRequest 对象被创建并准备好处理请求时调用。你可以在这里进行请求的初始化操作,如记录请求的开始时间。

@Override
public void requestInitialized(ServletRequestEvent sre) {ServletRequest request = sre.getServletRequest();System.out.println("Request initialized: " + request.getRemoteAddr());
}


requestDestroyed(ServletRequestEvent sre):
当请求处理完成并且 ServletRequest 对象被销毁时调用。你可以在这里执行清理操作,如记录请求的结束时间或释放资源。

@Override
public void requestDestroyed(ServletRequestEvent sre) {System.out.println("Request destroyed: " + sre.getServletRequest().getRemoteAddr());
}


配置
要使用 ServletRequestListener,你需要在 web.xml 文件中进行配置:

xml

<listener><listener-class>com.example.RequestListener</listener-class>
</listener>


在这个例子中,RequestListener 是实现了 ServletRequestListener 接口的类。

使用示例
假设你有一个实现了 ServletRequestListener 接口的类:java

package com.example;import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.annotation.WebListener;@WebListener
public class RequestListener implements ServletRequestListener {@Overridepublic void requestInitialized(ServletRequestEvent sre) {System.out.println("Request initialized: " + sre.getServletRequest().getRemoteAddr());}@Overridepublic void requestDestroyed(ServletRequestEvent sre) {System.out.println("Request destroyed: " + sre.getServletRequest().getRemoteAddr());}
}


在这个例子中,使用了 @WebListener 注解来声明监听器,并且实现了 requestInitialized 和 requestDestroyed 方法以处理请求的生命周期事件。

 

http://www.lryc.cn/news/419143.html

相关文章:

  • cs使用说明
  • skynet 连接redis
  • quark-design 原生引入使用说明
  • UE开发中的设计模式(二) —— 中介者模式
  • 安卓应用开发学习:聚合数据API获取天气预报
  • 设计模式 - 抽象工厂模式
  • 塔子哥选数字-阿里淘天2024笔试(codefun2000)
  • 【leetcode】杨辉三角(Java语言描述)
  • Vue - 关于vue-kinesis 移动动画组件
  • leetCode- - - 链表
  • Ashok:一款多功能开源网络侦查OSINT工具
  • 没有获取淘宝API的资质怎么获取淘宝数据
  • SQL手工注入
  • 【SQL】大的国家
  • 8月5日学习笔记 glibc安装与安全用户角色权限
  • DrissionPage 一个替代selenium的pip --- 一个可以接管正在运行的chrome包
  • 爬虫入门--了解相关工具
  • django项目中通用的分页组件
  • 想实现ubuntu搭建sqli-labs靶场
  • tp8 按日期分组查出数据
  • 单例模式(懒汉模式,饿汉模式)
  • 【Qt】Item Widgets 多元素控件
  • sharded_inference_engine:MLXDynamicShardInferenceEngine;step
  • JAVA开发学习-day21
  • Python的安装环境以及应用
  • TabLayout使用以及自定义tab标签
  • 第二十节、有限状态机和抽象类多态
  • SQL注入实例(sqli-labs/less-23)
  • 3.Redis数据类型(二)
  • JavaWeb系列十一: Web 开发会话技术Session