监听器
1.什么是监听器?
监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。
2.配置文件
<!--配置监听器-->
<listener>
<listener-class>common.ListenerCommon</listener-class>
</listener>
3.被监听的类
被监听的类,需要实现一个接口HttpSessionListener
public class ListenerCommon implements HttpSessionListener{
public ListenerCommon(){
System.out.println("监听器实例化");
}
/*
* session对象创建后执行sessionCreated(HttpSessionEvent se)方法
* se就是事件对象
*/
public void sessionCreated(HttpSessionEvent se) {
System.out.println("haha");
//1.通过HttpSessionEvent事件源来 获取session
HttpSession session=se.getSession();
session.setMaxInactiveInterval(10);
//2.通过HttpSession获取上下文
ServletContext sc=session.getServletContext();
//3.通过ServletContext绑定数据并且获取在线人数
Integer count=(Integer)sc.getAttribute("count");
if(count==null){
count=1;
}else{
count++;
}
sc.setAttribute("count",count);
}
/*
* 什么时候监听器销毁?
* 当sessionId过期会销毁
*/
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("监听器 销毁了");
}
}
4.jsp显示页面
获取绑定的servlet绑定的count,每过10秒,sessionid刷新一次,说明了每过10秒后访问,count都增加:
<%=config.getServletContext().getAttribute("count") %>
过10秒后,sessionid过期,再刷新页面时: