8.1 监听器接口和注册

8.1 监听器接口和注册

监听器接口简介

监听器接口主要在 javax.servlet javax.servlet.http的包中。有以下这些接口:

  • javax.servlet.ServletContextListener:它能够响应ServletContext生命周期事件,它提供了ServletContext创建之后和ServletContext关闭之前的会被调用的方法。
  • javax.servlet.ServletContextAttributeListener:它能够响应ServletContext范围的属性添加删除替换事件。
  • javax.servlet.http.HttpSessionListener:它能够响应HttpSession的创建、超时和失效事件。
  • javax.servlet.http.HttpSessionAttributeListener:它能响应HttpSession范围的属性添加、删除、替换事件。
  • javax.servlet.http.HttpSessionActivationListener:它在一个HttpSession激活或者失效时被调用。
  • javax.servlet.http.HttpSessionBindingListener:可以实现这个接口来保存HttpSession范围的属性。当有属性从HttpSession添加或删除时,HttpSessionBindingListener 接口能够做出响应。
  • javax.servlet.ServletRequestListener:它能够响应一个ServletRequest的创建或删除。
  • javax.servlet.ServletRequestAttributeListener:它能响应ServletRequest范围的属性值添加、删除、修改事件。
  • javax.servlet.AsyncListener:一个用于异步操作的监听器,在第11章会进行更详细的介绍。

如何编写监听器

编写一个监听器,只需要写一个Java类来实现对应的监听器接口就可以了Servlet 3.0Servlet 3.1中提供了两种注册监听器的方法第一种是使用WebListener注解。例如:

1
2
3
@WebListener
public class ListenerClass implements ListenerInterface {
}

第二种方法是在部署描述文档中增加一个listener元素。

1
2
3
</listener>
<listener-class>fully-qualified listener class</listener-class>
</listener>

你可以在一个应用中添加多个监听器,这些监听器是同步工作的