以监听一个网页的在线人数为例
public class OnlineCountListener implements HttpSessionListener {
//创建Session的监听,创建一个Session就会触发一次事件
public void sessionCreated(HttpSessionEvent se) {
ServletContext ctx = se.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就会触发一次事件
public void sessionDestroyed(HttpSessionEvent se) {
ServletContext ctx = se.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);
}
/*
回忆——Session销毁的俩种方法:
1.手动销毁 getSession().invalidate();
2.自动销毁
<session-config>
<session-timeout>1</session-timeout>
</session-config>
*/
}
在web.xml中注册
<!--注册监听器-->
<listener>
<listener-class>com.krito.listener.OnlineCountListener</listener-class>
</listener>