事件监听器

优质
小牛编辑
125浏览
2023-12-01

应用事件监听器是实现一个或多个 Servlet 事件监听器接口的类。它们是在部署 Web 应用时,实例化并注册到 Web 容器中。它们由开发人员在WAR 包中提供。

Servlet 事件监听器支持在 ServletContext、HttpSession 和ServletRequest 状态改变时进行事件通知。Servlet 上下文监听器是用来管理应用的资源或 JVM 级别持有的状态。HTTP 会话监听器是用来管理从相同客户端或用户进入 web 应用的一系列请求关联的状态或资源。Servlet 请求监听器是用来管理整个 Servlet 请求生命周期的状态。异步监听器是用来管理异步事件,例如超时和完成异步处理。

可以有多个监听器类监听每一个事件类型,且开发人员可以为每一个事件类型指定容器调用监听器 bean 的顺序。

事件类型和监听器接口

事件类型和监听器接口用于监控下表所示的:

TABLE 11-1 Servlet Context Events

事件类型描述监听器接口
生命周期Servlet上下文刚刚创建并可用于服务它的第一个请求,或者Servlet上下文即将关闭javax.servlet.ServletContextListener
属性更改在 Servlet 上下文的属性已添加、删除、或替换。javax.servlet.ServletContextAttributeListener

TABLE 11-2 HTTP Session Events

事件类型描述监听器接口
生命周期会话已创建、销毁或超时。javax.servlet.http.HttpSessionListener
属性更改已经在HttpSession上添加、移除、或替换属性javax.servlet.http.HttpSessionAttributeListener
改变IDHttpSession 的 ID 将被改变javax.servlet.http.HttpSessionIdListener
会话迁移HttpSession 已被激活或钝化javax.servlet.http.HttpSessionActivationListener
对象绑定对象已经从HttpSession绑定或解除绑定javax.servlet.http.HttpSessionBindingListener

TABLE 11-3 Servlet Request Events

事件类型描述监听器接口
生命周期一个servlet请求已经开始由Web组件处理javax.servlet.ServletRequestListener
更改属性已经在ServletRequest上添加、移除、或替换属性。javax.servlet.ServletRequestAttributeListener
异步事件超时、连接终止或完成异步处理javax.servlet.AsyncListener

监听器使用的一个例子

为了说明事件使用方案,考虑一个包含一些使用数据库的 Servlet 的简单 Web 应用。开发人员提供了一个 Servlet 上下文监听器类用于管理数据库连接。

  1. 当应用启动时,监听器类得到通知。应用登录到数据库,并在 servlet 上下文中存储连接。
  2. 应用中的 Servlet 根据需要,在 Web 应用的活动期间访问连接。
  3. 当 Web 服务器关闭时,或应用从 Web 服务器移除时,监听器类得到通知且关闭数据库连接。