1. 程式人生 > >JavaWeb_監聽域物件建立和銷燬的Listener1一d物件

JavaWeb_監聽域物件建立和銷燬的Listener1一d物件

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>