概念
Servlet 監(jiān)聽器用于監(jiān)聽 web 應用程序中的 ServletContext,HttpSession 和 ServletRequest 等域對象的創(chuàng)建和銷毀事件,以及監(jiān)聽這些域對象中的屬性發(fā)生修改的事件
分類
1、監(jiān)聽域對象自身的創(chuàng)建和銷毀的事件監(jiān)聽器
2、監(jiān)聽域對象中的屬性的增加和刪除的事件監(jiān)聽器
3、監(jiān)聽綁定到 HttpSession 域中的某個對象的狀態(tài)的事件監(jiān)聽器
常用監(jiān)聽器
1、ServletContextListener
2、ServletRequestListener
3、HttpSessionListener
使用
1、實現各自的監(jiān)聽方法

l兩個方法,分別是對象被創(chuàng)建(contextInitialized),還有對象被銷毀(contextDestroyed)
還有實現?ServletRequestListener 的方法

和實現?HttpSessionListener 的方法

2、在 web.xml 里配置

其中,ServletContextListener 是最常用的 listener,可以在當前 web 應用被加載時對當前 web 應用的相關資源進行初始化操作,例如:創(chuàng)建數據庫連接池,創(chuàng)建 spring 的 IOC 容器,讀取當前 web 應用的初始化參數等。
生命周期
request
是一個請求,當一個響應返回時,即被銷毀,當發(fā)送一個請求時被創(chuàng)建。
注意,請求轉發(fā)的過程是一個 request 對象,而重定向是兩個請求
session
當第一次訪問 web 應用的一個 JSP 或 Servlet 時,且該 JSP 或 Servlet 中還需要創(chuàng)建 session 對象,此時服務器會創(chuàng)建一個 session 對象
session 銷毀有幾種情況:
1、session 過期
2、直接調用 session 的 invalidate 方法
3、當前 web 應用被卸載(session 可以被持久化)
注意,關閉瀏覽器并不意味著 session 被銷毀,還可以通過 sessionid 找到服務器中的 session 對象,當訪問地址帶上之前做創(chuàng)建的 sessionid,依然不會創(chuàng)建新的 session 對象
JSESSIONID=XXXXXXXX
http://localhost:8080/test.jsp;jsessionid=XXXXXXXX
application
貫穿于當前的 WEB 應用的生命周期,當前 WEB 應用被加載時創(chuàng)建 application 對象,當前 WEB 應用被卸載時銷毀 application 對象
以上為本人的一些學習筆記,如有出錯歡迎指正,陸續(xù)更新?。?!