Servlet 监听器
这里的监听器和普通时候听到的鼠标点击事件挺像的,它是自动执行的,当你触发了某种事件,比如服务器启动会触发服务器启动事件。而这个事件是体现在 ServletContextListener 接口上的。
监听器它属于第三种 Servlet,负责监听 WEB 程序执行的各种操作。可以对 application ,request,session 三种进行监听。
使用
首先,需要对几个接口进行实现。
application 监听
实际也就是对 ServletContext 监听。有两个接口
ServletContextListener
- 监听服务器的启动和关闭
ServletContextAttributeListener
- 对 application 域对象的设置、移除属性监听。
服务器启动、关闭监听
主要有两个实现方法
void contextInitialized(ServletContextEvent sce)
- 用于发生启动时候执行的方法
void contextDestroyed(ServletContextEvent sce)
- 用于发生销毁的时候执行
属性监听
ServletContextAttributeListener 可以对 application 域对象设置和移除以后属性时的监听。
void attributeAdded(ServletContextAttributeEvent scab)
- 在发生添加属性到 application 域对象的时候执行
void attributeRemoved(ServletContextAttributeEvent scab)
- 在发生移除属性到 application 域对象的时候执行
void attributeReplaced(ServletContextAttributeEvent scab)
- 在发生修改(重新赋值)属性到 application 域对象的时候执行
Session 监听
实际也就是对 HttpServlet 监听。有两个接口
HttpSessionListener
- 对 session 的创建和销毁监听
HttpSessionAttributeListener
- 对 session 域对象的新增,修改和移除的监听
会话的创建、销毁监听
主要有两个实现方法
void sessionCreate(HttpSessionEvent hse)
- 用于发生在 session 的创建,浏览器第一次访问服务器的时候执行的方法
sessionDestroyed(HttpSessionEvent hse)
- 用于发生在 session 对象销毁的时候执行
属性监听
HttpSessionAttributeListener
可以对 session域对象设置和移除以后属性时的监听。
void attributeAdded(HttpSessionBindingEvent shbe )
- 在发生添加属性到 session 域对象的时候执行
void attributeRemoved(HttpSessionBindingEvent shbe)
- 在发生移除属性到 session 域对象的时候执行
void attributeReplaced(HttpSessionBindingEvent hsbe)
- 在发生修改(重新赋值)属性到 session 域对象的时候执行
request 监听
实际也就是对 ServletRequest 监听。有两个接口
ServletRequestListener
- 对浏览器的请求进行监听
ServletRequestAttributeListener
- 对请求与信息的创建、销毁和移除进行监听
请求的创建、销毁监听
ServletRequestListener
对请求的销毁和创建,监听主要有两个实现方法
void requestInitialized(ServletRequestEvent sre)
- 用于发生请求的创建时候执行的方法
void requestDestroyed(ServletRequestEvent sre)
- 用于发生在请求销毁的时候执行的方法
属性监听
ServletRequestAttributeListener
可以对 application 域对象设置和移除以后属性时的监听。
void attributeAdded(ServletRequestAttributeEvent srae)
- 在发生添加属性到 request 域对象的时候执行
void attributeRemoved(ServletRequestAttributeEvent srae)
- 在发生移除属性到 request 域对象的时候执行
void attributeReplaced(ServletRequestAttributeEvent srae)
- 在发生修改(重新赋值)属性到 request 域对象的时候执行
配置
那么对象创建和实现接口完毕,该怎样把监听器能运行在 web 程序上呢?因为是属于 Servlet ,所以用和标准 Servlet 差不多的配置。
-
web.xml 配置
<!-- 注册监听器 --> <listener> <listener-class>com.wanbangee.listener.ServletContextListenerDemo</listener-class> </listener>
-
注解配置
@WebListener
使用注解,在监听器类的声明出使用注解。
@WebListener public class loginListener implements ServletContextListener{......}