監聽器用於監聽Web應用中某些對象的建立、銷燬、增長,修改,刪除等動做的發生,而後做出相應的響應處理。當監聽範圍的對象的狀態發生變化的時候,服務器自動調用監聽器對象中的方法。經常使用於統計網站在線人數、系統加載時進行信息初始化、統計網站的訪問量等等。java
能夠分爲:git
能夠分爲:github
原理:每當有一個訪問鏈接到服務器時,服務器就會建立一個session來管理會話。那麼咱們就能夠經過統計session的數量來得到當前在線人數。因此這裏用到的是HttpSessionListener。web
一、建立監聽器類,實現HttpSessionListener接口,並重寫監聽器類中的方法。代碼以下:服務器
public class onLineCount implements HttpSessionListener { public int count=0;//記錄session的數量 public void sessionCreated(HttpSessionEvent arg0) {//監聽session的建立 count++; arg0.getSession().getServletContext().setAttribute("Count", count); } @Override public void sessionDestroyed(HttpSessionEvent arg0) {//監聽session的撤銷 count--; arg0.getSession().getServletContext().setAttribute("Count", count); } }
二、在web.xml中配置監聽器。注意:監聽器>過濾器>servlet,配置的時候要注意前後順序session
<listener> <listener-class>com.ygj.control.onLineCount</listener-class> </listener>
若是使用 Servlet3.0 以上版本,監聽器的配置能夠直接在代碼中經過註解來完成,無需在 web.xml 中再配置。以下:ide
@WebListener //在此註明如下類是監聽器 public class onLineCount implements HttpSessionListener { public int count=0; public void sessionCreated(HttpSessionEvent arg0) { count++; arg0.getSession().getServletContext().setAttribute("Count", count); } @Override public void sessionDestroyed(HttpSessionEvent arg0) { count--; arg0.getSession().getServletContext().setAttribute("Count", count); }
三、在須要顯示在線人數的地方經過session.getAttribute("Count")
便可獲取在線人數值。post
除了上面監聽session創建與銷燬的listener外,還有如下幾個經常使用的監聽器。網站
一、監聽session屬性的增長、移除以及屬性值改變的HttpSessionAttributeListener,以下圖:code
二、監聽web上下文的初始化(服務器已準備好接收請求)與銷燬的ServletContextListener,以下圖:
三、監聽web上下文屬性的增長、刪除、屬性值變化的ServletContextAttributeListener,以下圖:
四、監聽request的建立與銷燬的ServletRequestListener,以下圖:
五、監聽request的屬性的增長、刪除、屬性值變化的ServletRequestAttributeListener,以下圖: