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

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

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

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

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

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

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

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

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

        System.out.println("web應(yīng)用被關(guān)閉了。。。");
    }

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

網(wǎng)友評論