文章目录
- 什么是监听器
- 如何写监听器
- 配置监听器
- 统计在线人数的案例
什么是监听器
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 项目的虚拟目录。
