监听器是Servlet规范中的一员,就像Filter一样。在Servlet中所有的监听器接口都是以“Listener”结尾。
而监听器的作用就是,给我们提供一个特殊的时机(比如session中放入参数时),而在这个特殊的时机如果我们想要做些什么的话,就要使用刀监听器了。
2.监听器的种类 jakarta.servlet包- ServletContextListener
- ServletContextAttributeListener
- ServletRequestListener
- ServletRequestAttributeListener
这几个类一眼就知道是监听Servlet域对象的数据变动的。
jakarta.servlet.http包- HttpSessionListener
- HttpSessionAttributeListener
- 该监听器需要使用@WebListener注解进行标注。
- 该监听器监听的是什么?是session域中数据的变化。只要数据变化,则执行相应的方法。主要监测点在session域对象上。
- HttpSessionBindingListener
- 该监听器不需要使用@WebListener进行标注。
- 假设User类实现了该监听器,那么User对象在被放入session的时候触发bind事件,User对象从session中删除的时候,触发unbind事件。
- 假设Customer类没有实现该监听器,那么Customer对象放入session或者从session删除的时候,不会触发bind和unbind事件。
- HttpSessionIdListener
- session的id发生改变的时候,监听器中的唯一一个方法就会被调用。
- HttpSessionActivationListener
- 监听session对象的钝化和活化的。
- 钝化:session对象从内存存储到硬盘文件。
- 活化:从硬盘文件把session恢复到内存。
这里我们以ServletContextListener为例:
-
首先我们需要编写一个类实现ServletContextListener接口,并且实现里面的方法。
-
void contextInitialized(ServletContextEvent event) void contextDestroyed(ServletContextEvent event)
-
-
其次在web.xml文件中对ServletContextListener进行配置,如下:
-
com.bjpowernode.javaweb.listener.MyServletContextListener
-



