域对象创建和销毁的事件监听器就是用来监听ServletContext、HttpSession和HttpServletRequest这三个对象的创建和销毁事件的监听器。
ServletContextListener
创建ServletContextListener监听器:
- 1、创建一个普通Java类,实现ServletContextListener接口
- 2、(eclipse)直接创建一个Listener,选择实现ServletContextListener接口
配置web.xml:
- 1、如果直接创建的Listener,则web.xml会自动配置该监听器的url路径
- 2、如果是创建的Java类然后实现的ServletContextListener接口,则需要配置web.xml:
<listener> <listener-class>ServletContextListener实现类的路径</listener-class> </listener>
在监听器中实现ServletContextListener接口的两个抽象方法:
- 1、contextInitialized():Web项目发布时创建与该项目对应的ServletContext对象的同时自动执行该方法
- 2、contextDestroyed():服务器关闭时销毁每个Web项目所对应的ServletContext对象的同时自动执行该方法
例:
package cn.jingpengchong.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class ApplicationListener implements ServletContextListener {
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("ApplicationListener 被销毁");
}
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("ApplicationListener 被创建");
}
}
启动服务器时在控制台输出下面的内容:
启动服务器时在控制台输出下面的内容:
HttpSessionListener
创建HttpSessionListener监听器:
- 1、创建一个普通Java类,实现HttpSessionListener接口
- 2、(eclipse)直接创建一个Listener,选择实现HttpSessionListener接口
配置web.xml:
- 1、如果直接创建的Listener,则web.xml会自动配置该监听器的url路径
- 2、如果是创建的Java类然后实现的HttpSessionListener接口,则需要配置web.xml:
<listener> <listener-class>HttpSessionListener实现类的路径</listener-class> </listener>
在监听器中实现HttpSessionListener接口的两个抽象方法:
- 1、sessionCreated():HttpSession对象创建时自动执行该方法
- 2、sessionDestroyed():HttpSession对象销毁时自动执行该方法
例:
package cn.jingpengchong.listener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent arg0) {
System.out.println("SessionListener 被创建");
}
public void sessionDestroyed(HttpSessionEvent arg0) {
System.out.println("SessionListener 被销毁");
}
}
发送请求创建HttpSession对象时在控制台输出“SessionListener 被创建”;
HttpSession对象失效时或者执行“session.invalidate();”后在控制台输出“SessionListener 被销毁”。
ServletRequestListener
创建ServletRequestListener监听器:
- 1、创建一个普通Java类,实现ServletRequestListener接口
- 2、(eclipse)直接创建一个Listener,选择实现ServletRequestListener接口
配置web.xml:
- 1、如果直接创建的Listener,则web.xml会自动配置该监听器的url路径
- 2、如果是创建的Java类然后实现的ServletRequestListener接口,则需要配置web.xml:
<listener> <listener-class>ServletRequestListener实现类的路径</listener-class> </listener>
在监听器中实现ServletRequestListener接口的两个抽象方法:
- 1、requestInitialized():每次发送请求时执行该方法
- 2、requestDestroyed():每次请求完毕执行该方法
例:
package cn.jingpengchong.listener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
public class RequestListener implements ServletRequestListener {
public void requestDestroyed(ServletRequestEvent arg0) {
System.out.println("RequestListener 被销毁");
}
public void requestInitialized(ServletRequestEvent arg0) {
System.out.println("RequestListener 被创建");
}
}
每次发送请求后都会在控制台依次打印“RequestListener 被创建”、“RequestListener 被销毁”,前者是在发送请求时打印的,后者是在请求完毕后打印的。