Servlet监听器
01什么是监听器
能监听某个对象状态变化的组件,Servlet的监听器就是监听域对象的变化
事件源 | 被监听的对象 |
---|---|
监听器 | 监听事件源的对象 |
注册监听器 | 监听器与事件源相绑定 |
响应行为 | 事件源行为触 发的监听器的行为 |
对于Servlet监听器事件源就是三个域对象request、session、servletContext
servlet | ServletRequestListener |
---|---|
ServletRequestAttributeListener | |
session | HttpSessionListener |
HttpSessionAttributeListener | |
servletContext | Servlet ContextListener |
ServletContextAttributeListener |
02使用
域监听器,监听域的创建和销毁
以servletContextListener为例
public class Listener implements ServletContextListener {
public void contextInitialized(ServletContextEvent sce) {
System.out.println("服务器启动");
}
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("服务器关闭");
}
属性监听器,监听属性的添加,移除,修改
public class Listener1 implements ServletContextAttributeListener {
public void attributeAdded(ServletContextAttributeEvent scae) {
}
public void attributeRemoved(ServletContextAttributeEvent scae) {
}
public void attributeReplaced(ServletContextAttributeEvent scae) {
}
}
传入的参数scae就是当前的属性信息,当域对象添加移除或修改属性时就会传入这个当前属性作为参数,可以获得名还有值,也可以获得当前域对象。通过getSource获得域对象时需要强制转化类型
在写好了监听器要到web.xml中注册,在一个事件触发后会到web.xml中去找有没有对应的触发
或者使用注解
@WebListener()