Servlet_Listener监听器
监听器在监听时涉及到的几个部分:事件,事件源,监听器,处理器。
将监听器绑定到事件源上,当事件发生时触发监听器中的成员方法(即处理器),处理器根据获取到的事件对象对事件进行处理。
Servlet中共有8种监听器(可分为3类):
- 用于监听域对象创建和销毁的事件监听器(ServletContextListener接口,HttpSessionListener接口,ServletRequestListener接口)
- 用于监听域对象属性增加和删除的事件监听器(ServletContextAttributeListener接口,HttpSessionAttributeListener接口,ServletRequestAttributeListener接口)(Attribute:属性)
- 用于监听绑定到HttpSession域中某个对象状态的事件监听器
a)HttpSessionBindingListener接口:用于监听JavaBean对象绑定到HttpSession对象和从HttpSession对象解绑的事件。
b)HttpSessionActivationListener接口:用于监听HttpSession中对象活化和钝化的过程。
监听域对象的生命周期
- 编写一个实现了ServletContextListener接口,HttpSessionListener接口,ServletRequestListener接口的监听器实例。
public class TestListener implements ServletContextListener, ServletRequestListener,HttpSessionListener {
public void contextInitialized(ServletContextEvent servletContextEvent) {
System.out.println("ServletContext 对象创建");
}
public void contextDestroyed(ServletContextEvent servletContextEvent) {
System.out.println("ServletContext 对象销毁");
}
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
System.out.println("ServletRequest 对象销毁");
}
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
System.out.println("ServletRequest 对象创建");
}
public void sessionCreated(HttpSessionEvent httpSessionEvent) {
System.out.println("HttpSession 对象创建");
}
public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
System.out.println("HttpSession 对象销毁");
}
}
- 在web.xml中配置监听器类信息
<listener>
<listener-class>Listener.TestListener</listener-class>
</listener>
注意:在Servlet2.4之前,<listener>
元素必须放在所有<servlet>
元素之前,且在所有<filter-mapping>
元素之后。
- 开启web服务器,并打开一个页面文件(.html不行,不支持session)
在开启/关闭web服务器的时候,能看到ServletContext对象创建/销毁的提示
浏览器发出请求后,web容器会创建ServletRequest对象和HttpSession对象,请求完成后ServletRequest对象随之销毁,HttpSession对象会在关闭浏览器或Session过期后销毁。
本文来自博客园,作者:独游空想家,转载请注明原文链接:https://www.cnblogs.com/linzhikai/p/16555468.html