用來監聽特定對象的創建或銷毀、屬性的變化的!
是一個實現特定接口的普通java類!
Servlet中哪些對象需要監聽?
- request / session / servletContext
- 分別對應的是request監聽器、session相關監聽器、servletContext監聽器
監聽器(listener)
監聽器接口:
-
監聽對象創建/銷毀的監聽器接口
- Interface ServletRequestListener 監聽request對象的創建或銷毀
- Interface HttpSessionListener 監聽session對象的創建或銷毀
- Interface ServletContextListener 監聽servletContext對象的創建或銷毀
-
監聽對象屬性的變化
- Interface ServletRequestAttributeListener 監聽request對象屬性變化: 添加、移除、修改
- Interface HttpSessionAttributeListener 監聽session對象屬性變化: 添加、移除、修改
- Interface ServletContextAttributeListener 監聽servletContext對象屬性變化
-
session相關監聽器
- Interface HttpSessionBindingListener 監聽對象綁定到session上的事件
- Interface HttpSessionActivationListener(了解) 監聽session序列化及反序列化的事件
生命周期監聽器
聲明周期監聽器: 監聽對象的創建、銷毀的過程!
監聽器開發步驟:
- 寫一個普通java類,實現相關接口;
- 配置(web.xml)
ServletRequestListener
監聽request對象的創建或銷毀
public class MyRequestListener implements ServletRequestListener {
@Override
public void requestDestroyed(ServletRequestEvent servletRequestEvent){
System.out.println("MyRequestListener.requestDestroyed()");
}
@Override
public void requestInitialized(ServletRequestEvent servletRequestEvent){
System.out.println("MyRequestListener.requestInitialized()");
}
}
<listener>
<listener-class>com.flynn.MyRequestListener</listener-class>
</listener>
HttpSessionListener
監聽session對象的創建或銷毀。
ServletContextListener
監聽servletContext對象的創建或銷毀
屬性監聽器
監聽:request/session/servletContext對象屬性的變化!
ServletRequestAttributeListener
HttpSessionAttributeListener
ServletContextAttributeListener
與前文的request對象監聽一樣的實現