监听器案例代码:
package com.wxl.listener;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
//统计网站在线人数: 统计session
public class OnlineCountListener implements HttpSessionListener {
//创建seesion监听:看你的一举一动
//一旦创建Session就会触发这个事件!
@Override
public void sessionCreated(HttpSessionEvent httpSessionEvent) {
ServletContext ctx=httpSessionEvent.getSession().getServletContext();
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就会触发一次这个事件
@Override
public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
ServletContext ctx=httpSessionEvent.getSession().getServletContext();
Integer onlineCount=(Integer) ctx.getAttribute("onlineCount");
if(onlineCount==null){
onlineCount=new Integer(0);
}else{
int count=onlineCount.intValue();
onlineCount=new Integer(count-1);
}
ctx.setAttribute("OnlineCount",onlineCount);
}
}
配置web.xml:
<!--注册监听器-->
<listener>
<listener-class>com.wxl.listener.OnlineCountListener</listener-class>
</listener>
<session-config>
<session-timeout>1</session-timeout>
</session-config>
jsp页面查看效果:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<div>当前有<%=this.getServletConfig().getServletContext().getAttribute("OnlineCount")%>人在线</div>
</body>
</html>