监听器Listener
Listener表示监听器,是JavaWeb三大组件(Servlet、Filter、Listener)之一。
监听器可以监听就是在application,session,request三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件。
application 是 ServletContext 类型的对象。
ServletContext 代表整个web应用,在服务器启动的时候,tomcat会自动创建该对象。在服务器关闭时会自动销毁该对象。
创建一个实现了指定接口的java类
监听request--->ServletRequestListener 监听request对象的创建和销毁
requestInitialized(ServletRequestEvent sre)//创建
requestDestroyed(ServletRequestEvent sre)//销毁
注意:形参可以获取监听的request对象
sre.getServletRequest();
监听request--->ServletRequestAttributeListener 监听request作用域数据的变更。
attributeAdded(ServletRequestAttributeEvent srae)
attributeRemoved(ServletRequestAttributeEvent srae)
attributeReplaced(ServletRequestAttributeEvent srae)
注意:形参可以获取被监听的数据
srae.getName() 获取监听数据的键
srae.getValue() 获取监听数据的值
监听session--->HttpSessionListener 监听session的创建和销毁
sessionCreated(HttpSessionEvent se) 创建
sessionDestroyed(HttpSessionEvent se) 销毁
注意:形参可以获取被监听的session对象
se.getSession();
监听session--->HttpSessionAttributeListener 监听session数据的变更
attributeAdded(HttpSessionBindingEvent event)
attributeRemoved(HttpSessionBindingEvent event)
attributeReplaced(HttpSessionBindingEvent event)
注意:形参可以获取被监听的数据
event.getName() 获取数据的键名
event.getValue() 获取数据的值
监听application--->ServletContextListener 监听application对象的初始化和销毁
void contextInitialized(ServletContextEvent sce):ServletContext 对象被创建了会自动执行的方法
void contextDestroyed(ServletContextEvent sce):ServletContext 对象被销毁时会自动执行的方法
注意:形参可以获取当前application对象。
sce.getServletContext();
监听application--->ServletContextAttributeListener 监听数据的变更
attributeAdded(ServletContextAttributeEvent event)
attributeRemoved(ServletContextAttributeEvent event)
attributeReplaced(ServletContextAttributeEvent event)
注意:形参可以获取当前监听的数据
event.getName() 获取数据的键名
event.getValue() 获取数据的值
这里面只有ServletContextListener这个监听器后期我们会接触到,ServletContextListener是用来监听ServletContext对象的创建和销毁。
ServletContextListener 使用
1 @WebListener 2 public class ContextLoaderListener implements ServletContextListener { 3 @Override 4 public void contextInitialized(ServletContextEvent sce) { 5 //加载资源 6 System.out.println("ContextLoaderListener..."); 7 } 8 @Override 9 public void contextDestroyed(ServletContextEvent sce) { 10 //释放资源 11 } 12 }
启动服务器,就可以在启动的日志信息中看到 contextInitialized()
方法输出的内容,同时也说明了 ServletContext
对象在服务器启动的时候被创建了。