监听器的编写步骤:
a.编写一个监听器类去实现监听器接口b.覆盖监听器的方法
c.需要在web.xml中进行配置---注册
ServletContextAttributeListener.java(自定义的监听器,实现ServletContextAttributeListener接口):
package com.xxx.demo;
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
public class MyServletContextAttributeListener implements ServletContextAttributeListener{
@Override
// 域对象中添加属性时触发
public void attributeAdded(ServletContextAttributeEvent scab) {
System.out.println(scab.getName()); //getName();放到域中的name (属性名)
System.out.println(scab.getValue()); //getValue();放到域中的value (属性值)
}
@Override
public void attributeRemoved(ServletContextAttributeEvent scab) {
System.out.println(scab.getName());//删除的域中的name
System.out.println(scab.getValue());//删除的域中的value
}
@Override
public void attributeReplaced(ServletContextAttributeEvent scab) {
System.out.println(scab.getName()); //获得修改前的name
System.out.println(scab.getValue()); //获得修改前的value
}
}
web.xml(配置文件,注册监听器):
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>MyWeb</display-name>
<!-- 注册监听器(相当于hook钩子) -->
<listener>
<listener-class>com.xxx.demo.MyServletContextAttributeListener</listener-class> <!-- 必须是全名 (反射实现) -->
</listener>
</web-app>