应用程序事件监听器是Web应用程序生命周期中的事件产生时接到通知的类。比如,servlet上下文或者一个会话对象被创建和修改时,生命周期事件便会接收到一个通知。还有其他与其相关的具有监听器类的生命周期事件。第6章将详细讨论它们。这里只是简单说明一下如何使用web.xml中的元素,将它们用于把监听器注册到Web应用程序。
注册监听器很简单,只需要将一个listener元素放入web.xml的web-app元素即可。在listener元素中,listener-class元素列出了listener完全限定类名,如下所示:
清单2.29显示了一个简单的ContextReporter监听器,创建(如加载Web应用程序)或销毁(如关闭服务器)Web应用程序的ServletContext时它将在标准输出中打印一条信息。清单2.30显示了注册监听器所用的部分web.xml文件。
清单2.29 ContextReporter.java
清单2.30 web.xml(节选,声明监听器)
注册监听器很简单,只需要将一个listener元素放入web.xml的web-app元素即可。在listener元素中,listener-class元素列出了listener完全限定类名,如下所示:
<listener>
<listener-class>package.ListenerClass</listener-class>
</listener>
清单2.29显示了一个简单的ContextReporter监听器,创建(如加载Web应用程序)或销毁(如关闭服务器)Web应用程序的ServletContext时它将在标准输出中打印一条信息。清单2.30显示了注册监听器所用的部分web.xml文件。
清单2.29 ContextReporter.java
package coreservlets;
import javax.servlet.*;
import java.util.*;
/** Simple listener that prints a report on the standard output
* when the ServletContext is created or destroyed.
*/
public class ContextReporter implements ServletContextListener {
public void contextInitialized(ServletContextEvent event) {
System.out.println("Context created on " +
new Date() + ".");
}
public void contextDestroyed(ServletContextEvent event) {
System.out.println("Context destroyed on " +
new Date() + ".");
}
}
清单2.30 web.xml(节选,声明监听器)
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<!-- Turn on the ContextReporter. -->
<listener>
<listener-class>coreservlets.ContextReporter</listener-class>
</listener>
<!-- ... -->
</web-app>