12、监听器
监听器
实现一个监听器的接口;(有N种)
1.编写一个监听器
实现监听器的接口
//统计网站在线人数;统计session
public class OnlineCountListener implements HttpSessionListener {
//创建session监听;看你的一举一动
//一旦创建一个session,就会触发一次这个事件
@Override
public void sessionCreated(HttpSessionEvent httpSessionEvent) {
ServletContext servletContext = httpSessionEvent.getSession().getServletContext();
Integer onlineCount = (Integer) servletContext.getAttribute("OnlineCount");
if ( onlineCount == null ) {
onlineCount = new Integer(1);
} else {
int count = onlineCount.intValue();
onlineCount = new Integer(count+1);
}
servletContext.setAttribute("OnlineCount",onlineCount);
}
//销毁session监听
//一旦销毁session就会触发一次这个事件
@Override
public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
ServletContext servletContext = httpSessionEvent.getSession().getServletContext();
Integer onlineCount = (Integer) servletContext.getAttribute("OnlineCount");
if ( onlineCount == null ) {
onlineCount = new Integer(0);
} else {
int count = onlineCount.intValue();
onlineCount = new Integer(count-1);
}
servletContext.setAttribute("OnlineCount",onlineCount);
}
/*
session销毁:
1.手动销毁 getSession().invalidate();
2.自动销毁
*/
}
2.web.xml中注册监听器
<listener>
<listener-class>com.cc.listener.OnlineCountListener</listener-class>
</listener>
<h1>当前有 <span style="color:blue;"><%=application.getAttribute("OnlineCount")%></span> 人在线</h1>
3.看情况是否使用
先用谷歌浏览器访问

再用Edge浏览器访问

设置自动关闭session后:
<session-config>
<session-timeout>1</session-timeout>
</session-config>

浙公网安备 33010602011771号