12.监听器
实现一个监听器的接口(有N种功能)
实现步骤:
编写一个监听器:
1.实现监听器的接口
package com.edwin.listener;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* @author Edwin D
* @date 2020.6.16 上午 8:36
统计在线人数的session
*/
public class OnlineCountListener implements HttpSessionListener {
// 创建Session的监听,查看到你的一举一动
// 一旦创建session成功,就会触发这个事件。
public void sessionCreated(HttpSessionEvent se) {
ServletContext ctx = se.getSession().getServletContext();
System.out.println(se.getSession().getId());
Integer onlineCount = (Integer)ctx.getAttribute("OnlineCount");
if (onlineCount == null) {
onlineCount = new Integer(1);
} else {
int count = onlineCount.intValue();
onlineCount = new Integer(count+1);
}
ctx.setAttribute("OnlineCount",onlineCount);
}
// 销毁Session的监听
// 一旦销毁session成功,就好触发这个事件。
/*
Session销毁的方法:
1.手动销毁:getSession().invalidate();
2.自动销毁,在xml里面设置:
<session-config>
<session-timeout>7</session-timeout>
</session-config>
*/
public void sessionDestroyed(HttpSessionEvent se) {
}
}
2.在xml中注册监听器
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!--注册监听器-->
<listener>
<listener-class>com.edwin.listener.OnlineCountListener</listener-class>
</listener>
</web-app>
3.判断是否使用的情景。
输出效果:
第一次访问
只有一个浏览器访问,而且第一次,应该是1才对。
查看后方控制台输出:
原因:由于Tomcat在启动的过程中,可能存在出错重启的现象,导致输出结果与实际可能出现偏差。
解决方法:
重启项目:
第二次输出效果:
控制台:
《成功的花》——冰心
成功的花,
人们只惊羡她现时的明艳!
然而当初她的芽儿,
浸透了奋斗的泪泉,
洒遍了牺牲的血雨!
参考文献
《【狂神说Java】JavaWeb入门到实战》
2020.06.16