什么是监听器如何写监听器配置监听器统计在线人数的案例
什么是监听器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;
@WebListener
public class CountListener implements HttpSessionListener {
private int count = 0;
public void sessionCreated(HttpSessionEvent arg0) {
System.out.println("sessionCreated...");
count++;
HttpSession session = arg0.getSession();
ServletContext sctx = session.getServletContext();
sctx.setAttribute("count", count);
}
public void sessionDestroyed(HttpSessionEvent arg0) {
System.out.println("Session对象被销毁...");
count--;
HttpSession session = arg0.getSession();
ServletContext sctx = session.getServletContext();
sctx.setAttribute("count", count);
}
}
index.jsp 代码:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
当前系统在线人数
系统在线人数:
<%= application.getAttribute("count") %>
退出
logout.jsp 的示例代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
<%
session.invalidate();
%>
部署好之后,启动服务器,访问:http://localhost:8080/sl/index.jsp,sl 项目的虚拟目录。



