监听器(Listener)
监听器
监听器就是用来监听 ServletContext, HttpSession, HttpServletRequest 这三个对象中的属性变更信息事件的监听器。
这三个监听器接口分别是ServletContextAttributeListener, HttpSessionAttributeListener 和ServletRequestAttributeListener,这三个接口中都定义了三个方法来处理被监听对象中的属性的增加,删除和替换的事件,同一个事件在这三个接口中对应的方法名称完全相同,只是接受的参数类型不同。
1、attributeAdded 方法
当向被监听对象中增加一个属性时,web容器就调用事件监听器的attributeAdded方法进行响应,这个方法接收一个事件类型的参数,监听器可以通过这个参数来获得正在增加属性的域对象和被保存到域中的属性对象
各个域属性监听器中的完整语法定义为:
1 public void attributeAdded(ServletContextAttributeEvent scae)
2 public void attributeReplaced(HttpSessionBindingEvent hsbe)
3 public void attributeRmoved(ServletRequestAttributeEvent srae)
2、attributeRemoved 方法
当删除被监听对象中的一个属性时,web容器调用事件监听器的attributeRemoved方法进行响应
各个域属性监听器中的完整语法定义为:
1 public void attributeRemoved(ServletContextAttributeEvent scae)
2 public void attributeRemoved (HttpSessionBindingEvent hsbe)
3 public void attributeRemoved (ServletRequestAttributeEvent srae)
3、attributeReplaced 方法
当监听器的域对象中的某个属性被替换时,web容器调用事件监听器的attributeReplaced方法进行响应
各个域属性监听器中的完整语法定义为:
1 public void attributeReplaced(ServletContextAttributeEvent scae)
2 public void attributeReplaced (HttpSessionBindingEvent hsbe)
3 public void attributeReplaced (ServletRequestAttributeEvent srae)
代码实现
学生管理系统,统计在线人数
@WebListener
public class OnlineListener implements HttpSessionAttributeListener {
@Override
public void attributeAdded(HttpSessionBindingEvent se) {
System.out.println("OnlineListener.attributeAdded");
String name = se.getName();
//System.out.println("name = " + name);
//登录用户的session发生变化
if("account".equals(name)){
ServletContext application = se.getSession().getServletContext();
int online_num = application.getAttribute("online_num") == null ? 0 : (Integer) application.getAttribute("online_num");
System.out.println("online_num = " + online_num);
online_num++;
application.setAttribute("online_num",online_num);
}
}
@Override
public void attributeRemoved(HttpSessionBindingEvent se) {
System.out.println("OnlineListener.attributeRemoved");
}
}
上一篇: DIV+CSS自适应窗口高度
下一篇: CSS两列高度自适应,右边自适应
推荐阅读
-
Listener监听器笔记1
-
Java Web监听器如何实现定时发送邮件
-
Vue $listener 和 .native 修饰符 示例详解
-
jmeter监听器(JDBC Request)
-
Oracle RAC 监听配置 (listener.ora tnsnames.ora)
-
remote_listener 设置问题导致数据库不能打开
-
WebLogic10gR3集群Warning信息:Failed to register a disconnect listener
-
WebLogic10gR3集群Warning信息:Failed to register a disconnect listener
-
Oracle:listener does not currently know of SID given in conn
-
Oracle 监听器