简述
监听器是web的三大组件之一,事件的监听机制和js中的事件监听类似。
事件 | 一件事 |
事件源 | 事件发生的地方 |
监听器 | 一个对象 |
注册监听 | 将事件、事件源、监听器绑定在一起,当事件源上发生某个事件时,执行监听器代码 |
监听器一般用于监听三大域ServletContext、Session和Request的创建和销毁,以及域中各属性的变化
ServletContextListener监听接口
该监听器监听ServletContext对象的创建和销毁
void contextDestroyed(ServletContextEvent sce) |
ServletContext对象销毁之前会调用该方法 |
void contextInitialized(ServletContextEvent sce) |
ServletContext对象销毁之后会调用该方法 |
监听器的编写和配置
编写
和其余两个组件servlet和filter一样,监听器也是一个自定义的类,需实现接口,在这里这个接口就是特定的监听器接口了,这里以ServletContextListener为例
package cn.itcast.web.listener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class ContextLoaderListener implements ServletContextListener { /** * 监听ServletContext创建,ServletContext对象是在服务器启动时自动创建 * 服务器启动后自动调用 * @param servletContextEvent */ @Override public void contextInitialized(ServletContextEvent servletContextEvent) { System.out.println("ServletContext对象被创建了....."); } /** * 监听ServletContext销毁,ServletContext对象是在服务器关闭时销毁 * 服务器关闭后自动调用 * @param servletContextEvent */ @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { System.out.println("ServletContext对象被销毁了......"); } }
配置
监听器的配置极其简单,因为监听器是不需要访问的,所以只要在web.xml进行了一个注册的操作即可
<listener> <listener-class>cn.itcast.web.listener.ContextLoaderListener</listener-class> </listener>
当然我们也可以用注解方式配置监听器,只需要在类上面加一个@WebListener注解即可