首頁常見問題正文

Servlet事件監(jiān)聽器:監(jiān)聽域對象中的屬性變更

更新時間:2023-01-14 來源:黑馬程序員 瀏覽量:

IT培訓班

  ServletContext、HttpSession和ServletRequest這三個對象,都可以創(chuàng)建、刪除和修改它們各自的屬性,為了監(jiān)聽這三個對象的屬性變更,ServletAPI專門提供了一些借口,ServletContextAttributeListener、HttpSessionAttributeListener和ServletRequestAttributeListener接口,分別用于監(jiān)聽ServletContext對象中的屬性變更,監(jiān)聽HttpSession對象中的屬性變更,監(jiān)聽ServletReuqest對象中的屬性變更,接下來將針對這三個接口進行講解。

  在程序開發(fā)中,不僅需要對域對象進行監(jiān)聽,有時還需要對某個域對象屬性的變更進行監(jiān)聽,為了完成這樣的功能,Servlet API專門提供了ServletContextHttpAttributeListener、HttpSessionAttributeListener和ServletRequestAttributeListener接口,這三個接口都定義了相同名稱的方法,分別用于處理被監(jiān)聽對象屬性的增加、刪除和替換,接下來針對這三個接口中的方法進行講解。

  1.attributeAdded()方法

  當向被監(jiān)聽的域對象中增加一個屬性的時候,Web容器就調用事件監(jiān)聽器的attributeAdded()方法進行響應,該方法接收一個事件類型的參數,監(jiān)聽器可以通過這個參數來獲取正在增加屬性的域對象和被保存到域中的屬性對象。這個方法在各個域屬性監(jiān)聽器中的完整語法定義如下。

public void attributeAdded(ServletContextAttributeEvent scab)

  上述是ServletContextAttributeListener接口中定義的方法,當向ServletContext對象中增加一個屬性的時候,Web容器就調用這個方法并傳遞一個ServletContextEvent類型的參數。

public void attributeAdded(HttpSessionBindindEvent se)

  上述是HttpSessionAttributeListener接口中定義的方法,當向HttpSession對象中增加一個屬性的時候,Web容器就調用這個方法并傳遞一個HttpSessionBindindEvent類型的參數。

public void attributeAdded(ServletRequestAttributeEvent srae)

  上述是ServletRequestAttributeListener接口中定義的方法,當向ServletRequest對象中增加一個屬性時,Web容器就調用這個方法并傳遞一個ServletRequestAttributeEvent類型的參數。

  2.attributeRemoved()方法

  當刪除被監(jiān)聽對象中的一個屬性時,Web容器調用事件監(jiān)聽器的attributeRemoved()方法進行響應。這個方法在各個域屬性監(jiān)聽器中的完整語法定義如下。

public void attributeRemoved(ServletContextAttributeEvent scab)
public void attributeRemoved(HttpSessionBindindEvent se)
public void attributeRemoved(ServletRequestAttributeEvent srae)

  這些方法接收的參數類型與上面講解的attributeAdded()方法一樣,監(jiān)聽器可以通過這個參數來獲取正在刪除屬性的域對象。

  3.attributeReplaced()方法

  當被監(jiān)聽器的域對象中的某個屬性被替換時,Web容器會調用事件監(jiān)聽器的attributeReplaced()方法進行響應。這個方法在各個域屬性監(jiān)聽器中的完整語法定義如下。

public void attributeReplaced(ServletContextAttributeEvent scab)
public void attributeReplaced(HttpSessionBindindEvent se)
public void attributeReplaced(ServletRequestAttributeEvent srae)

  這些方法接收的參數類型與上面講解的attributeAdded()方法一樣,監(jiān)聽器可以通過這個參數來獲取正在替換屬性的域對象。

1673678257926_領取課程.jpg

分享到:
在線咨詢 我要報名
和我們在線交談!