Java web application——Listener
应用程序事件提供ServletContext和HttpSession以及ServletRequest对象状态更改的通知,用户编写响应状态更改的事件监听器类,并配置和部署他们。Servlet容器会调用事件监听器中的方法
监听器实例和线程
在将第一个请求执行到应用程序之前,容器要完成监听器类的实例化,并维护监听器类的实例直到处理完最后一个请求为止
Servlet上下文和HTTP对话的属性改变可能同时发生,但是容器不需要将这些通知同步到监听器之间,监听器类负责维持数据的完整性并明确地处理这种情况
不同监听器的作用
- Servlet上下文监听类用于管理应用程序JVM层级上的资源和状态
- Http会话的监听器类用于管理和进入Web应用程序的请求有关的资源和状态,这些请求来自同一客户端
- Servlet请求监听器用于管理贯穿于servlet请求生命周期的状态
- 异步监听器用于管理异步事件比如超时或者异步过程的完成
流程:
- 用户创建一个实现其中一个侦听器接口的事件侦听器类。
- 此实现在部署描述符中注册。
- 在部署时,servlet容器构造事件侦听器类的实例。(这就是公共构造函数必须存在的原因,如编写事件监听器类中所述。)
- 在运行时,servlet容器调用侦听器类的实例。
事件类型和监听器接口
事件监听器的配置
- 在Web.xml用<listener>配置
- 按照他们被调用的顺序注册
- 必须直接跟在 <filter> and <filter-mapping>后面
- 必须直接在<servlet>前面