java EE開發之Servlet第四課:監聽器(Listener)

新夢想IT發表於2023-02-06



1.什麼是Listener

監聽器就像老闆的秘書,那個秘書就是活的監聽器,時時監聽著老闆,當老闆發生一些事情的時候,秘書就會有相應的措施。比如老闆口渴了,秘書就會去端茶;比如老闆要提提神,秘書就會泡一杯咖啡等。




2.介紹java的幾種常用的監聽器


(1)實現ServletRequestListener介面,監聽request(需要在web.xml中配置)

 /**

 * 當request物件被銷燬的時候,容器就會自動去

 * 呼叫這個監聽器的requestDestroyed,產生一個事件物件ServletRequestEvent 

 */

public void requestDestroyed(ServletRequestEvent sre) {

System.out.println("request被銷燬");

}

   /**

 * 當request物件被建立的時候,容器就會自動去

 * 呼叫這個監聽器的requestInitialized,產生一個事件物件ServletRequestEvent*/

public void requestInitialized(ServletRequestEvent sre) {

System.out.println("request被建立");

}




配置:


<listener>


    <listener-class>com.accp.RequestListener</listener-class>

</listener>


(2)實現HttpSessionListener介面,監聽session (需要在web.xml中配置)



/**

* 當session被建立的時候被呼叫,產生一個事件物件HttpSessionEvent*/

public void sessionCreated(HttpSessionEvent se) {  }

/**

* 當session被銷燬的時候被呼叫,產生一個事件物件HttpSessionEvent */

public void sessionCreated(HttpSessionEvent se) {  }




配置:


   <listener>

        <listener-class>com.accp.SessiontListener</listener-class>

    </listener>


(3)實現ServletContextListener介面,監聽ServletContext(需要在web.xml中配置)


/**

* 當ServletContext被銷燬的時候,容器就會自動去

* 呼叫這個監聽器的contextDestroyed,產生一個事件物件ServletContextEvent

*/

public void contextDestroyed(ServletContextEvent sce) {  }




   /**

 * 當ServletContext被建立的時候,容器就會自動去

 * 呼叫這個監聽器的contextDestroyed,產生一個事件物件ServletContextEvent*/

public void contextInitialized(ServletContextEvent sce) {  }




配置:


 <listener>

     <listener-class>com.accp.ContextListener</listener-class>

 </listener>


(4)實現SessionBindingListener介面,監聽Session設值和取值(不需要在web.xml中配置)

/**

 * 當向Session裡面設值的時候,容器呼叫此方法,生產一個事件物件  */

public void valueBound(HttpSessionBindingEvent event) {   }




/**

 * 當向Session裡面移除值的時候,容器呼叫此方法,生產一個事件物件  */


public void valueUnbound(HttpSessionBindingEvent event) {  }


哪個類的物件需要監聽,就讓那個類實現該介面




3.應用


應用一


使用 ServletRequestListener ,HttpSessionListener , ServletContextListener


統計訪問量,線上人數,請求次數




應用二


使用SessionBindingListener做購物車:


HttpSessionBindingListener只監聽制定的session


HttpSessionListener:監聽處理所有的session


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69940641/viewspace-2934116/,如需轉載,請註明出處,否則將追究法律責任。

相關文章