1. 程式人生 > >javaWeb學習之Listener監聽

javaWeb學習之Listener監聽

host idle .get 序列化 name mov 面試題 感知 就是

一、監聽器Listener

javaEE包括13門規範 在課程中主要學習 servlet技術 和 jsp技術

其中 servlet規範包括三個技術點:servlet listener filter

1.什麽是監聽器?

監聽器就是監聽某個對象的的狀態變化的組件

監聽器的相關概念:

事件源:被監聽的對象 ----- 三個域對象 request session servletContext

監聽器:監聽事件源對象 事件源對象的狀態的變化都會觸發監聽器 ---- 6+2

註冊監聽器:將監聽器與事件源進行綁定

響應行為:監聽器監聽到事件源的狀態變化時

所涉及的功能代碼 ---- 程序員編寫代 碼

2.監聽器有哪些?

第一維度:按照被監聽的對象劃分:ServletRequest域 HttpSession域 ServletContext域

第二維度:監聽的內容分:監聽域對象的創建與銷毀的 監聽域對象的屬性變 化的

技術分享

1.監聽三大域對象的創建與銷毀的監聽器

(1)監聽ServletContext域的創建與銷毀的監聽器ServletContextListener

1)Servlet域的生命周期

何時創建:服務器啟動創建

何時銷毀:服務器關閉銷毀

2)監聽器的編寫步驟(重點):

a、編寫一個監聽器類去實現監聽器接口

b、覆蓋監聽器的方法

c、需要在web.xml中進行配置---註冊

3)監聽的方法:

技術分享

4)配置文件:

技術分享

5)ServletContextListener監聽器的主要作用

a、初始化的工作:初始化對象 初始化數據 ---- 加載數據庫驅動 連接池的初始 化

b、加載一些初始化的配置文件 --- spring的配置文件

c、任務調度----定時器----Timer/TimerTask

技術分享

(1)監聽Httpsession域的創建於銷毀的監聽器HttpSessionListener

1)HttpSession對象的生命周期

何時創建:第一次調用request.getSession時創建

何時銷毀:服務器關閉銷毀 session過期 手動銷毀

2)

HttpSessionListener的方法

技術分享

(1)監聽ServletRequest域創建與銷毀的監聽器ServletRequestListener

1)ServletRequest的生命周期

創建:每一次請求都會創建request

銷毀:請求結束

2)ServletRequestListener的方法

1.監聽三大域對象的屬性變化的

(1)域對象的通用的方法:

setAttribute(name,value)

--- 觸發添加屬性的監聽器的方法

--- 觸發修改屬性的監聽器的方法

getAttribute(name)

removeAttribute(name)

--- 觸發刪除屬性的監聽器的方法

(1)ServletContextAttibuteListener監聽器

技術分享

(1) HttpSessionAttributeListener監聽器(同上)

(2) ServletRequestAriibuteListenr監聽器(同上)

1.session中的綁定的對象相關的監聽器(對象感知監聽器)

(1)即將要被綁定到session中的對象有幾種狀態

綁定狀態:就一個對象被放到session域中

解綁狀態:就是這個對象從session域中移除了

鈍化狀態:是將session內存中的對象持久化(序列化)到磁盤

活化狀態:就是將磁盤上的對象再次恢復到session內存中

面試題:當用戶很對時,怎樣對服務器進行優化?

(2)綁定與解綁的監聽器HttpSessionBindingListener

技術分享

(1)鈍化與活化的監聽器HttpSessionActivationListener

可以通過配置文件 指定對象鈍化時間 --- 對象多長時間不用被鈍化

META-INF下創建一個context.xml

技術分享

<Context>

<!-- maxIdleSwap:session中的對象多長時間不使用就鈍化 -->

<!-- directory:鈍化後的對象的文件寫到磁盤的哪個目錄下 配置鈍化的對象文件在 work/catalina/localhost/鈍化文件 -->

<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">

<Store className="org.apache.catalina.session.FileStore" directory="itcast205" />

</Manager>

</Context>

被鈍化到work/catalina/localhost/的文件

技術分享

javaWeb學習之Listener監聽