更新時(shí)間:2023-01-14 來(lái)源:黑馬程序員 瀏覽量:
ServletContext、HttpSession和ServletRequest這三個(gè)對(duì)象,都可以創(chuàng)建、刪除和修改它們各自的屬性,為了監(jiān)聽(tīng)這三個(gè)對(duì)象的屬性變更,ServletAPI專(zhuān)門(mén)提供了一些借口,ServletContextAttributeListener、HttpSessionAttributeListener和ServletRequestAttributeListener接口,分別用于監(jiān)聽(tīng)ServletContext對(duì)象中的屬性變更,監(jiān)聽(tīng)HttpSession對(duì)象中的屬性變更,監(jiān)聽(tīng)ServletReuqest對(duì)象中的屬性變更,接下來(lái)將針對(duì)這三個(gè)接口進(jìn)行講解。
在程序開(kāi)發(fā)中,不僅需要對(duì)域?qū)ο筮M(jìn)行監(jiān)聽(tīng),有時(shí)還需要對(duì)某個(gè)域?qū)ο髮傩缘淖兏M(jìn)行監(jiān)聽(tīng),為了完成這樣的功能,Servlet API專(zhuān)門(mén)提供了ServletContextHttpAttributeListener、HttpSessionAttributeListener和ServletRequestAttributeListener接口,這三個(gè)接口都定義了相同名稱(chēng)的方法,分別用于處理被監(jiān)聽(tīng)對(duì)象屬性的增加、刪除和替換,接下來(lái)針對(duì)這三個(gè)接口中的方法進(jìn)行講解。
當(dāng)向被監(jiān)聽(tīng)的域?qū)ο笾性黾右粋€(gè)屬性的時(shí)候,Web容器就調(diào)用事件監(jiān)聽(tīng)器的attributeAdded()方法進(jìn)行響應(yīng),該方法接收一個(gè)事件類(lèi)型的參數(shù),監(jiān)聽(tīng)器可以通過(guò)這個(gè)參數(shù)來(lái)獲取正在增加屬性的域?qū)ο蠛捅槐4娴接蛑械膶傩詫?duì)象。這個(gè)方法在各個(gè)域?qū)傩员O(jiān)聽(tīng)器中的完整語(yǔ)法定義如下。
public void attributeAdded(ServletContextAttributeEvent scab)
上述是ServletContextAttributeListener接口中定義的方法,當(dāng)向ServletContext對(duì)象中增加一個(gè)屬性的時(shí)候,Web容器就調(diào)用這個(gè)方法并傳遞一個(gè)ServletContextEvent類(lèi)型的參數(shù)。
public void attributeAdded(HttpSessionBindindEvent se)
上述是HttpSessionAttributeListener接口中定義的方法,當(dāng)向HttpSession對(duì)象中增加一個(gè)屬性的時(shí)候,Web容器就調(diào)用這個(gè)方法并傳遞一個(gè)HttpSessionBindindEvent類(lèi)型的參數(shù)。
public void attributeAdded(ServletRequestAttributeEvent srae)
上述是ServletRequestAttributeListener接口中定義的方法,當(dāng)向ServletRequest對(duì)象中增加一個(gè)屬性時(shí),Web容器就調(diào)用這個(gè)方法并傳遞一個(gè)ServletRequestAttributeEvent類(lèi)型的參數(shù)。
當(dāng)刪除被監(jiān)聽(tīng)對(duì)象中的一個(gè)屬性時(shí),Web容器調(diào)用事件監(jiān)聽(tīng)器的attributeRemoved()方法進(jìn)行響應(yīng)。這個(gè)方法在各個(gè)域?qū)傩员O(jiān)聽(tīng)器中的完整語(yǔ)法定義如下。
public void attributeRemoved(ServletContextAttributeEvent scab) public void attributeRemoved(HttpSessionBindindEvent se) public void attributeRemoved(ServletRequestAttributeEvent srae)
這些方法接收的參數(shù)類(lèi)型與上面講解的attributeAdded()方法一樣,監(jiān)聽(tīng)器可以通過(guò)這個(gè)參數(shù)來(lái)獲取正在刪除屬性的域?qū)ο蟆?/p>
當(dāng)被監(jiān)聽(tīng)器的域?qū)ο笾械哪硞€(gè)屬性被替換時(shí),Web容器會(huì)調(diào)用事件監(jiān)聽(tīng)器的attributeReplaced()方法進(jìn)行響應(yīng)。這個(gè)方法在各個(gè)域?qū)傩员O(jiān)聽(tīng)器中的完整語(yǔ)法定義如下。
public void attributeReplaced(ServletContextAttributeEvent scab) public void attributeReplaced(HttpSessionBindindEvent se) public void attributeReplaced(ServletRequestAttributeEvent srae)
這些方法接收的參數(shù)類(lèi)型與上面講解的attributeAdded()方法一樣,監(jiān)聽(tīng)器可以通過(guò)這個(gè)參數(shù)來(lái)獲取正在替換屬性的域?qū)ο蟆?br/>
Zookeeper如何管理集群?【大數(shù)據(jù)知識(shí)】
2023-01-14TiDB怎樣讀取歷史數(shù)據(jù)?【流程演示】
2023-01-14Python Web之表單:利用工廠函數(shù)定義表單集
2023-01-13Python學(xué)起來(lái)簡(jiǎn)單嗎?零基礎(chǔ)可以學(xué)習(xí)嗎?
2023-01-12哪些語(yǔ)言可以用來(lái)開(kāi)發(fā)網(wǎng)絡(luò)爬蟲(chóng)程序?
2023-01-12表單字段的通用參數(shù)都有哪些?【PythonWeb知識(shí)】
2023-01-12