Servlet監聽器

1)概念:web

1)監聽ServletContext、HttpSession和ServletRequest等域對象的建立事件、銷燬事件、域對象中屬性發生改變的事件。
2)當域對象的狀態發生變化的時候,服務器自動調用監聽器對象中的方法。

2)監聽對象:spring

1)ServletContext
2)HttpSession
3)ServletRequest

3)監聽內容:數據庫

監聽對象的建立、銷燬以及對象屬性發生改變的事件

4)分類:緩存

按監聽的對象劃分:

	1)ServletContext對象監聽器:	實現ServletContextListener、ServletContextAttributeListener接口
		應用:做爲定時器、加載全局屬性對象、建立全局數據庫鏈接、加載緩存信息等
		
	2)HttpSession對象監聽器:		實現HttpSessionListener、HttpSessionAttributeListener接口
	
		web.xml中配置session超時時間(單位:分):
		<session-config>
			<session-timeout>10</session-timeout>
		</session-config>
	
		應用:統計在線人數、記錄訪問日誌等
		
	3)ServletRequest對象監聽器:	實現ServletRequestListener、ServletRequestAttributeListener接口
		應用:讀取request參數,記錄訪問歷史
		
按監聽的事件劃分:

	1)監聽域對象的建立事件、銷燬事件的監聽器:
		實現ServletContextListener、HttpSessionListener、ServletRequestListener接口
		
	2)監聽域對象中屬性的增長事件、屬性的刪除事件的監聽器:
		實現ServletContextAttributeListener、HttpSessionAttributeListener、ServletRequestAttributeListener接口。
		
	3)監聽綁定到HttpSeesion中的某個對象的狀態變化事件的監聽器(建立普通JavaBean):
		實現接口及方法:HttpSessionBindingListener接口(valueBound和valueUnbound方法)、HttpSessionActivationListener接口(sessionWillPassivate和sessionDidActivate方法)
	
	  HttpSession中的對象狀態:
		  綁定:  	經過setAttribute()方法將bean保存到session對象中
		  解除綁定:	經過removeAttribue()方法解除綁定
		
		  鈍化(序列化):  	將session對象持久化到存儲設備上
		  活化(反序列化):	將session對象從存儲設備上進行恢復

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

5)實現:服務器

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>
	
	
監聽器的啓動順序:按照web.xml的配置順序來啓動

6)注意:session

加載順序:監聽器>過濾器>Servlet
相關文章
相關標籤/搜索