监听器 ——它监听着我们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 {
//初始化
@Override
public void contextInitialized(ServletContextEvent sce) {
ServletContext sc=sce.getServletContext();
sc.setAttribute("myAplicationKey","myAplicationValue");
System.out.println("当前ServletContext对象创建");
}
//销毁
@Override
public 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 {
@Override
public void requestInitialized(ServletRequestEvent sre) {
System.out.println("Request initialized: " + sre.getServletRequest().getRemoteAddr());
}
@Override
public void requestDestroyed(ServletRequestEvent sre) {
System.out.println("Request destroyed: " + sre.getServletRequest().getRemoteAddr());
}
}
在这个例子中,使用了 @WebListener 注解来声明监听器,并且实现了 requestInitialized 和 requestDestroyed 方法以处理请求的生命周期事件。