溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Servlet監(jiān)聽器怎么實現(xiàn)

發(fā)布時間:2021-12-18 15:24:43 來源:億速云 閱讀:147 作者:iii 欄目:云計算

本篇內(nèi)容主要講解“Servlet監(jiān)聽器怎么實現(xiàn)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Servlet監(jiān)聽器怎么實現(xiàn)”吧!

1)概念:

1)監(jiān)聽ServletContext、HttpSession和ServletRequest等域?qū)ο蟮膭?chuàng)建事件、銷毀事件、域?qū)ο笾袑傩园l(fā)生改變的事件。
2)當域?qū)ο蟮臓顟B(tài)發(fā)生變化的時候,服務(wù)器自動調(diào)用監(jiān)聽器對象中的方法。

2)監(jiān)聽對象:

1)ServletContext
2)HttpSession
3)ServletRequest

3)監(jiān)聽內(nèi)容:

監(jiān)聽對象的創(chuàng)建、銷毀以及對象屬性發(fā)生改變的事件

4)分類:

按監(jiān)聽的對象劃分:

	1)ServletContext對象監(jiān)聽器:	實現(xiàn)ServletContextListener、ServletContextAttributeListener接口
		應(yīng)用:作為定時器、加載全局屬性對象、創(chuàng)建全局數(shù)據(jù)庫連接、加載緩存信息等
		
	2)HttpSession對象監(jiān)聽器:		實現(xiàn)HttpSessionListener、HttpSessionAttributeListener接口
	
		web.xml中配置session超時時間(單位:分):
		<session-config>
			<session-timeout>10</session-timeout>
		</session-config>
	
		應(yīng)用:統(tǒng)計在線人數(shù)、記錄訪問日志等
		
	3)ServletRequest對象監(jiān)聽器:	實現(xiàn)ServletRequestListener、ServletRequestAttributeListener接口
		應(yīng)用:讀取request參數(shù),記錄訪問歷史
		
按監(jiān)聽的事件劃分:

	1)監(jiān)聽域?qū)ο蟮膭?chuàng)建事件、銷毀事件的監(jiān)聽器:
		實現(xiàn)ServletContextListener、HttpSessionListener、ServletRequestListener接口
		
	2)監(jiān)聽域?qū)ο笾袑傩缘脑黾邮录?、屬性的刪除事件的監(jiān)聽器:
		實現(xiàn)ServletContextAttributeListener、HttpSessionAttributeListener、ServletRequestAttributeListener接口。
		
	3)監(jiān)聽綁定到HttpSeesion中的某個對象的狀態(tài)變化事件的監(jiān)聽器(創(chuàng)建普通JavaBean):
		實現(xiàn)接口及方法:HttpSessionBindingListener接口(valueBound和valueUnbound方法)、HttpSessionActivationListener接口(sessionWillPassivate和sessionDidActivate方法)
	
	  HttpSession中的對象狀態(tài):
		  綁定:  	通過setAttribute()方法將bean保存到session對象中
		  解除綁定:	通過removeAttribue()方法解除綁定
		
		  鈍化(序列化):  	將session對象持久化到存儲設(shè)備上
		  活化(反序列化):	將session對象從存儲設(shè)備上進行恢復

	  session鈍化機制:
	    1)把服務(wù)器不常使用的session對象暫時序列化到系統(tǒng)文件或者是數(shù)據(jù)庫中,當使用時反序列化到內(nèi)存中,整個過程由服務(wù)器自動完成;
	    2)session的鈍化機制由SessionManager管理,創(chuàng)建一個普通的JavaBean綁定和解除需要實現(xiàn)HttpSessionBindingListener接口
			3)JavaBean必須實現(xiàn)Serializable接口

5)實現(xiàn):

web.xml
	<listener>
		<listener-class>完整類名</listener-class>
	</listener>
	
舉例:
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	
	<listener>
		<listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
	</listener>
	
	<listener>
		<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
	</listener>
	
	<session-config>
		<session-timeout>60</session-timeout>
	</session-config>
	
	
監(jiān)聽器的啟動順序:按照web.xml的配置順序來啟動

6)注意:

加載順序:監(jiān)聽器>過濾器>Servlet

到此,相信大家對“Servlet監(jiān)聽器怎么實現(xiàn)”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI