在我們的web容器中,一直不斷的觸發(fā)著各種事件,例如:web應用啟動和關閉,request請求到達和結束等。但是這些事件通常對于開發(fā)者來說是透明的,我們可以根據這些接口開發(fā)符合我們自身需求的功能。在web中常見的的幾個監(jiān)聽事件如下:

  • ServletContextListener:用于監(jiān)聽web應用的啟動和關閉

  • ServletContextAttributeListener:用于監(jiān)聽在application范圍內的數(shù)據的變動

  • ServletRequestListener:用于監(jiān)聽用戶請求的細節(jié)

  • ServletRequestAttributeListener:用于監(jiān)聽request范圍內的數(shù)據的變動

  • HttpSessionListener:用于監(jiān)聽某次會話的開始和結束

  • HttpSessionAttributeListener:用于監(jiān)聽session范圍內的屬性數(shù)據的變動

一、使用ServletContextListener監(jiān)聽web應用的啟動和關閉
我們想要實現(xiàn)一個自定義的Listener,需要兩個步驟,第一個是根據自己的需求繼承相應的上述的監(jiān)聽事件的接口,并實現(xiàn)其中的相應的方法。第二個步驟就是,在web.xml中配置此Listener監(jiān)聽器的處理類或者使用注解配置。下面我們通過繼承自ServletContextListener接口來實現(xiàn)對web應用的啟動和關閉實時監(jiān)控。

public class MyListener implements ServletContextListener {    @Override//web應用啟動時候觸發(fā)此事件
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("web應用啟動了。。。");
    }    @Override//web應用關閉的時候觸發(fā)事件
    public void contextDestroyed(ServletContextEvent sce) {

        System.out.println("web應用被關閉了。。。");
    }

}
<?xml version="1.0" encoding="UTF-