最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中監(jiān)聽器Listener詳解

 更新時(shí)間:2023年08月01日 11:56:40   作者:Zero攝氏度  
Listener是由Java編寫的WEB組件,主要完成對內(nèi)置對象狀態(tài)的變化 (創(chuàng)建、銷毀)和屬性的變化進(jìn)行監(jiān)聽,做進(jìn)一步的處理,主要對session和application內(nèi)置對象監(jiān)聽,這篇文章主要介紹了Java中監(jiān)聽器Listener,需要的朋友可以參考下

1、Listener

  • 是由Java編寫的WEB組件,主要完成對內(nèi)置對象狀態(tài)的變化 (創(chuàng)建、銷毀)和屬性的變化 進(jìn)行監(jiān)聽,做進(jìn)一步的處理
  • 作用:主要對session和application內(nèi)置對象監(jiān)聽。

2、對application監(jiān)聽

package cn.mldn.lxh.listener ;
import javax.servlet.* ;
public class ServletContextDemo
	implements ServletContextListener,ServletContextAttributeListener
{
	private ServletContext application = null ;
	// 實(shí)現(xiàn)方法
	public void contextInitialized(ServletContextEvent sce)
	{
		this.application = sce.getServletContext() ;
		System.out.println("** 上下文初始化 ...") ;
		System.out.println("** 當(dāng)前虛擬目錄的絕對路徑:"+this.application.getRealPath("/")) ;
	}
	public void contextDestroyed(ServletContextEvent sce)
	{
		System.out.println("** 上下文銷毀 ...") ;
	}
	public void attributeAdded(ServletContextAttributeEvent scab)
	{
		System.out.println("** 增加屬性:"+scab.getName()+" --> "+scab.getValue()) ;
	}
	public void attributeRemoved(ServletContextAttributeEvent scab)
	{
		System.out.println("** 刪除屬性:"+scab.getName()+" --> "+scab.getValue()) ;
	}
	public void attributeReplaced(ServletContextAttributeEvent scab)
	{
		System.out.println("** 替換屬性:"+scab.getName()+" --> "+scab.getValue()) ;
	}
};
/*
  <listener>
	<listener-class>cn.mldn.lxh.listener.ServletContextDemo</listener-class>
  </listener>
*/

1、語法 :

  • 是WEB組件,一定要有包聲明 package cn.mldn.lxh.listener ;
  • 包導(dǎo)入 javax.servlet
  • 實(shí)現(xiàn)接口 ServletContextListener ,ServletContextAttributeListener
  • 實(shí)現(xiàn)接口的方法

2、實(shí)現(xiàn)方法

實(shí)現(xiàn)的兩個(gè)接口,一個(gè)是為了實(shí)現(xiàn)對application狀態(tài)監(jiān)聽的方法,一個(gè)是為了實(shí)現(xiàn)對applciation屬性的變化監(jiān)聽的方法。如下:

  • 對applicaiton的狀態(tài)做監(jiān)聽 implements ServletContextListener ,實(shí)現(xiàn)兩個(gè)方法:
public void contextInitialized(ServletContextEvent sce);

tomcat一啟動(dòng),先創(chuàng)建出監(jiān)聽器,對application的創(chuàng)建和銷毀做監(jiān)聽。當(dāng)application一創(chuàng)建,被監(jiān)聽器監(jiān)聽到,就調(diào)用contextInitialized()方法;

public void contextDestroyed(ServletContextEvent sce);

當(dāng)application一銷毀,監(jiān)聽器就會(huì)監(jiān)聽到applicaiton銷毀,調(diào)用contextDestoryed();

對applicaiton里屬性的變化做監(jiān)聽 , implements ServletContextAttributeListener

public void attributeAdded(ServletContextAttributeEvent scab)
public void attributeRemoved(ServletContextAttributeEvent scab)
public void attributeReplaced(ServletContextAttributeEvent scab)

通過實(shí)現(xiàn)ServletContextAttributeListener 的三個(gè)方法,對applcation的屬性變化做監(jiān)聽。注意:監(jiān)聽到的都是已經(jīng)完成的變化 。比如往application里設(shè)值屬性、刪除屬性、替換屬性值等,這些都會(huì)被監(jiān)聽器監(jiān)聽到??梢酝ㄟ^方法獲得增加的屬性名和屬性值,獲得刪除的屬性名和屬性值,獲得替換的屬性名和替換前的屬性值(是被替換的,而不是替換后的值)

3、Tomcat一啟動(dòng),創(chuàng)建了哪些內(nèi)置對象?

  • tomcat一啟動(dòng),首先會(huì)創(chuàng)建監(jiān)聽器,去監(jiān)聽內(nèi)置對象的狀態(tài)和屬性變化。
  • 然后會(huì)創(chuàng)建Config對象,來收集配置文件中的初始參數(shù),一共有會(huì)創(chuàng)建兩個(gè)Config對象,分別是封裝Servlet初始參數(shù)的ServletConfig,封裝Filter初始參數(shù)的FilterConfig。
  • 然后會(huì)創(chuàng)建applicaiton對象
  • 然后創(chuàng)建Filter
  • 如果配了loadonstartup,就再創(chuàng)建servlet。

3、對session做監(jiān)聽

package cn.mldn.lxh.listener ;
import javax.servlet.http.* ;
public class HttpSessionDemo 
	implements HttpSessionListener,HttpSessionAttributeListener
{
	private HttpSession session ;
	// 實(shí)現(xiàn)方法
	public void sessionCreated(HttpSessionEvent se)
	{
		this.session = se.getSession() ;
		System.out.println("** Session 創(chuàng)建 ....") ;
		System.out.println("** SessionID --> "+this.session.getId()) ;
	}
	public void sessionDestroyed(HttpSessionEvent se)
	{
		System.out.println("** Session 銷毀 ....") ;
	}
	public void attributeAdded(HttpSessionBindingEvent se)
	{
		System.out.println("** Session 增加屬性:"+se.getName()+" --> "+se.getValue()) ;
	    System.out.println("** 獲得Session "+se.getSession().getId()) ;
	}
	public void attributeRemoved(HttpSessionBindingEvent se)
	{
		System.out.println("** Session 刪除屬性:"+se.getName()+" --> "+se.getValue()) ;
	}
	public void attributeReplaced(HttpSessionBindingEvent se)
	{
		System.out.println("** Session 替換屬性:"+se.getName()+" --> "+se.getValue()) ;
	}
};
/*
  <listener>
	<listener-class>cn.mldn.lxh.listener.HttpSessionDemo</listener-class>
  </listener>
*/

包聲明包導(dǎo)入類聲明,實(shí)現(xiàn) HttpSessionListener接口,實(shí)現(xiàn)對狀態(tài)監(jiān)聽的方法實(shí)現(xiàn)HttpSessionAttributeListener接口,實(shí)現(xiàn)對屬性變化監(jiān)聽的方法

什么時(shí)候創(chuàng)建session?

我們可以通過public void sessionCreated(HttpSessionEvent se) 來監(jiān)聽session的創(chuàng)建

  • 訪問服務(wù)器不會(huì)
  • 訪問靜態(tài)組件不會(huì)(html)
  • 只有訪問動(dòng)態(tài)組件(jsp),才會(huì)創(chuàng)建請求—第一次發(fā)送請求

到此這篇關(guān)于Java中監(jiān)聽器Listener詳解的文章就介紹到這了,更多相關(guān)java 監(jiān)聽器Listener內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

罗山县| 铜鼓县| 大埔县| 崇明县| 昌乐县| 丰镇市| 昌宁县| 屏南县| 东阿县| 闸北区| 宿州市| 雷州市| 霞浦县| 浏阳市| 阿图什市| 全南县| 乐至县| 满洲里市| 宁明县| 大连市| 广灵县| 平顺县| 深泽县| 哈密市| 文水县| 绥江县| 理塘县| 利辛县| 大兴区| 犍为县| 尤溪县| 石泉县| 旬邑县| 城固县| 呼玛县| 卓尼县| 陆川县| 宁德市| 永昌县| 峨眉山市| 石门县|