文章目录
什么是监听器
- 什么是监听器
- 如何写监听器
- 配置监听器
- 统计在线人数的案例
Servlet 规范当中定义的一种特殊的类,作用是监听容器当中产生的一些事件并进行相应的处理。
容器产生的事件指的是两大类事件: 第一大类 生命周期相关的事件,指的是当容器创建或者销毁 request,session,ServletContext 对象时产生的事件。 第二大类 绑订事件,指的是当调用 request,session,ServletContext 对象的setAttribute,removeAttribute 时产生的事件。
如何写监听器step1 写一个 Java 类,实现特定的监听器接口(依据要监听的事件类型,去实现相应的监听器接口)。
step2 在接口声明的方法中,实现监听的逻辑。
step3 配置(web.xml)。
配置监听器有先后顺序的要求,在 之后,
之前;
在
之后,
之前。
监听器示例代码:
package priv.lwx.servlet.web;
import javax.servlet.ServletContext;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* Session监听器
*
* @author liaowenxiong
* @date 2022/2/27 16:29
*/
@WebListener
public class CountListener implements HttpSessionListener {
private int count = 0;
/**
* Session对象创建后,就会执行该方法
*
* @param arg0
*/
public void sessionCreated(HttpSessionEvent arg0) {
System.out.println("sessionCreated...");
count++;
HttpSession session = arg0.getSession();
ServletContext sctx = session.getServletContext();
sctx.setAttribute("count", count);
}
/**
* Session对象销毁前会执行该方法
*
* @param arg0
*/
public void sessionDestroyed(HttpSessionEvent arg0) {
System.out.println("Session对象被销毁...");
count--;
HttpSession session = arg0.getSession();
ServletContext sctx = session.getServletContext();
sctx.setAttribute("count", count);
}
}
index.jsp 代码:
当前系统在线人数
系统在线人数:
退出
logout.jsp 的示例代码:
Title
部署好之后,启动服务器,访问:http://localhost:8080/sl/index.jsp,sl 项目的虚拟目录。