Listener初級學習總結
1.監聽器:專門用於對其他物件身上發生的事件或狀態改變進行監聽和相應處理的物件,當被監視的物件發生情況時,立即採取相應的行動。
2.Servlet 監聽器:Servlet 規範中定義的一種特殊類,它用於監聽 web 應用程式中的 ServletContext, HttpSession 和 ServletRequest 等域物件的建立與銷燬事件,以及監聽這些域物件中的屬性發生修改的事件。
3.按監聽的事件型別 Servlet 監聽器可分為如下三種類型:
A.監聽域物件自身的建立和銷燬
B.監聽域物件中的屬性的增加、替換和刪除的事件監聽器
C.監聽繫結到 HttpSession 域中的某個物件的狀態的事件監聽器
4.Servlet 規範為每種事件監聽器都定義了相應的介面,開發人員編寫的事件監聽器程式只需實現這些介面,web 伺服器根據使用者編寫的事件監聽器所實現的介面把它註冊到相應的被監聽物件上.
3.1版本的監聽器有:
5.被監聽物件中的屬性的增加,刪除和替換的事件,同一個事件在這三個介面中對應的方法名稱完全相同,只是接受的引數型別不同
6.物件的繫結與解綁:實現了HttpSessionBindingListener介面的 JavaBean 物件可以感知自己被繫結到 Session 中和從 Session 中刪除的事件。
不需要 web.xml 檔案中進行註冊,也不需要註解配置!若配置了可能導致啟動過程中出現錯誤!
7.監聽器的配置,兩種方式:
A.註解的方式:使用的註解是@WebListener,加在類名上方---僅有一個value屬性!
B.XML配置,例:
<listener>
<listener-class>com.ddb.javaweb.listener.ServletContextListenerDemo</listener-class>
</listener>
8.相關順序:
啟動順序:listener---filter---servlet
銷燬順序:servlet---filter---listener
9.讓一個會話失效,可以有如下兩種參考方式:
1.設定xml。
<session-config>
<session-timeout>30</session-timeout><!-- 30分鐘超時 -->
</session-config>
2.呼叫使無效的方法:
request.getSession().invalidate();
10.典型應用:---統計當前線上人數
實現思路:
A.在application中存一個set集合,用來儲存登入的使用者名稱;
B.在有新的會話接入時,從application中取出set集合,增加新的使用者,再將set集合設回application中;---可能需要處理中文使用者名稱亂碼的問題。
C.會話失效時,從application中取出set,從set中刪除當前的使用者名稱,同時將set設回application中。
D.返回set的size就是線上的使用者數。
11.除錯不能進入斷點的情況總結:----非常重要!
A.web伺服器沒有以除錯的方式執行;
B.所有的斷點,都被斷點遮蔽按鈕遮蔽了;
C.因為過濾器設定的範圍錯誤,攔截了所有的請求,攔截了請求卻沒有給任何提示;
D.web伺服器沒有重新載入修改後的編譯檔案,clean專案編譯後,重新啟動web伺服器。