监听器统计网站在线人数:
public class OnlineCountListener implements HttpSessionListener
{
//由于为每一个用户分配一个Session对象,所以可以通过统计Session的个数来统计网站在线的人数
//实现两个方法,创建session和销毁session,也就是监听一个session是否被创建,一个session是否被销毁
//一旦创建了一个session就会触发这个事件
@Override
public void sessionCreated(HttpSessionEvent se)
{
//取出此时OnlineCount这个字段的值是多少
// 如果为0,那表示当前没有人在访问网站, 现在这个事件被触发了,表示来了一个人,于是将在线人数置为1
//如果不为0,那表示本来就有人在访问网站,现在这个时间被再次触发,表示又来了一个人,于是在线人数加以1
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);
}
//更新完OnlineCount这个字段的值,就把它的新值设置进OnlineCount这个字段里面
ctx.setAttribute("OnlineCount",onlineCount);
}
//一旦销毁了一个session就会触发这个事件
@Override
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);
}
//更新完OnlineCount这个字段的值,就把它的新值设置进OnlineCount这个字段里面
ctx.setAttribute("OnlineCount",onlineCount);
}
}
在web.xml文件中注册
<listener>
<listener-class>com.kuang.OnlineCountListener</listener-class>
</listener>
监听器是一个程序
这个程序监听另一个对象的(1)属性是否改变 (2)方法是否被调用
当被监听的对象发生上述两件事情的时候,监听器这个程序里的某个方法回立即自动执行
事件源就是被监听的对象,将事件源和监听器进行绑定就是注册监听器
监听器 Listener可以分为 3 类,总共8个:
- 监听对象创建和销毁的监听器
- 监听对象中属性变更的监听器
- 监听 HttpSession 中的对象状态改变的监听器
1.监听对象创建和销毁的监听器
2.监听属性变更的监听器
3.监听 Session 中对象状态改变的监听器
一个应用:利用监听器统计网站在线人数