概念
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、實現(xiàn)各自的監(jiān)聽方法
l兩個方法酗宋,分別是對象被創(chuàng)建(contextInitialized)积仗,還有對象被銷毀(contextDestroyed)
還有實現(xiàn)?ServletRequestListener 的方法
和實現(xiàn)?HttpSessionListener 的方法
2、在 web.xml 里配置
其中本缠,ServletContextListener 是最常用的 listener斥扛,可以在當前 web 應用被加載時對當前 web 應用的相關資源進行初始化操作,例如:創(chuàng)建數(shù)據庫連接池丹锹,創(chuàng)建 spring 的 IOC 容器稀颁,讀取當前 web 應用的初始化參數(shù)等。
生命周期
request
是一個請求楣黍,當一個響應返回時匾灶,即被銷毀,當發(fā)送一個請求時被創(chuàng)建租漂。
注意阶女,請求轉發(fā)的過程是一個 request 對象,而重定向是兩個請求
session
當?shù)谝淮卧L問 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ù)更新I呷!樊拓!