JavaWeb_监听域对象创建和销毁的Listener1一d对象

时间:2021-08-07 08:35:21

1简介

监听器:专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被见识的对象发生情况时,立即采取相应的行动。
Servlet监听器:Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext、HttpSession和ServletRequest等域对象
的创建和销毁事件,以及监听这些域对象中的属性发生修改的事件。

2分类

按监听的事件类型Servlet监听器可分为如下三种:
--监听域对象自身创建和销毁的事件监听器
--监听域对象的属性的增加和删除的事件监听器
--监听绑定到 HttpSession域中的某个对象的状态的事件监听器

①域对象的创建和销毁

即ServletContext,HttpSession,HttpServletRequest这三个对象的创建和销毁事件的监听器。
其对象创建和销毁时机:
Servlet:web服务器启动时为每个web应用程序创建相应的ServletContext对象 || web服务器关闭时为每个web应用程序销毁相应对象
HttpSession:  浏览器开始与服务器会话时创建   ||     调用HttpSession.invalidate();超过最大有效时间,服务器进程被停止
ServletRequest:  每次请求开始时创建     ||     每次访问结束后销毁

ServletContextListener接口:
用于监听ServletContext对象的创建和销毁
当被创建时,激发contextInitialized(ServletContextEvent sce)方法
当被销毁时,激发contextDestoryed(ServletContextEvent sce)方法
HttpSessionListener 接口
     创建一个Session时,激发sessionCreated (HttpSessionEvent se) 方法
销毁一个Session时,激发sessionDestroyed (HttpSessionEvent se) 方法。   
ServletRequestListener接口:
创建一个ServletRequest 对象时,激发requestInitialized(ServletRequestEvent sre)方法
销毁一个Session时,激发requestDestroyed(ServletRequestEvent sre)方法
实现Listener接口:
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
*该Listener 可帮助我们进行web应用初始化
* @author hcx
* 应用:创建数据库连接池,创建Spring的IOC容器,读取当前web应用初始化参数
*/
public class HelloServletContextListener implements ServletContextListener {

public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("ServletContext Destroyed 销毁");

}

public void contextInitialized(ServletContextEvent arg0) {
System.out.println("ServletContext initilized");

}

}

    在web.xml中配置Listener:
<pre name="code" class="html"><?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<login-config>
<auth-method>BASIC</auth-method>
</login-config>
 <!-- 配置监听器  --> <listener> 	<listener-class>com.hcx.Listener.HelloServletContextListener</listener-class> </listener></web-app>