用來監(jiān)聽特定對(duì)象的創(chuàng)建或銷毀梳猪、屬性的變化的!
是一個(gè)實(shí)現(xiàn)特定接口的普通java類蹂析!
Servlet中哪些對(duì)象需要監(jiān)聽舔示?
- request / session / servletContext
- 分別對(duì)應(yīng)的是request監(jiān)聽器碟婆、session相關(guān)監(jiān)聽器、servletContext監(jiān)聽器
監(jiān)聽器(listener)
監(jiān)聽器接口:
-
監(jiān)聽對(duì)象創(chuàng)建/銷毀的監(jiān)聽器接口
- Interface ServletRequestListener 監(jiān)聽request對(duì)象的創(chuàng)建或銷毀
- Interface HttpSessionListener 監(jiān)聽session對(duì)象的創(chuàng)建或銷毀
- Interface ServletContextListener 監(jiān)聽servletContext對(duì)象的創(chuàng)建或銷毀
-
監(jiān)聽對(duì)象屬性的變化
- Interface ServletRequestAttributeListener 監(jiān)聽request對(duì)象屬性變化: 添加惕稻、移除竖共、修改
- Interface HttpSessionAttributeListener 監(jiān)聽session對(duì)象屬性變化: 添加、移除俺祠、修改
- Interface ServletContextAttributeListener 監(jiān)聽servletContext對(duì)象屬性變化
-
session相關(guān)監(jiān)聽器
- Interface HttpSessionBindingListener 監(jiān)聽對(duì)象綁定到session上的事件
- Interface HttpSessionActivationListener(了解) 監(jiān)聽session序列化及反序列化的事件
生命周期監(jiān)聽器
聲明周期監(jiān)聽器: 監(jiān)聽對(duì)象的創(chuàng)建公给、銷毀的過程!
監(jiān)聽器開發(fā)步驟:
- 寫一個(gè)普通java類蜘渣,實(shí)現(xiàn)相關(guān)接口淌铐;
- 配置(web.xml)
ServletRequestListener
監(jiān)聽request對(duì)象的創(chuàng)建或銷毀
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
監(jiān)聽session對(duì)象的創(chuàng)建或銷毀。
ServletContextListener
監(jiān)聽servletContext對(duì)象的創(chuàng)建或銷毀
屬性監(jiān)聽器
監(jiān)聽:request/session/servletContext對(duì)象屬性的變化蔫缸!
ServletRequestAttributeListener
HttpSessionAttributeListener
ServletContextAttributeListener
與前文的request對(duì)象監(jiān)聽一樣的實(shí)現(xiàn)