ServletRequestListener用于監聽使用者請求的到達,實作該接口的監聽器需要實作如下兩個方法;
1.requestInitialized(ServletRequestEvent sre):使用者請求到達,被初始化時觸發該方法。
2.requestDestroyed(ServletRequestEvent sre):使用者請求結束,被銷毀時觸發該方法。
ServletRequestAttributeListener則用于監聽ServletRequest(request)範圍内屬性的變化,實作該接口的監聽器需要實作attributeAdded(),attributeRemoved(),attributeReplaced()三個方法,由此可見ServletRequestAttributeListener與ServletContextAttributeListener的作用相似,都用于監聽屬性的改變,隻是ServletRequestAttributeListener監聽request範圍内的改變,而ServletContextAttributeListener範圍内屬性的改變。
需要指出的是,應用程式完全可以采用一個監聽器類來監聽多種事件,隻要讓該監聽器實作類同時實作多個監聽器接口即可,如下代碼:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICdzFWRoRXdvN1LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX90ERPdXSE5keRpXTmZEWjZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39zMwIzMxEDNzITOwIDM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
上面的監聽器實作類同時實作了ServletRequestListener接口和ServletRequestAttributeListener接口,是以它既可以監聽使用者請求的初始化和銷毀,也可監聽request範圍内屬性的變化。
由于實作了ServletRequestListener接口的監聽器可以非常友善監聽到每次請求的建立,銷毀是以web應用可以通過實作該接口的監聽器通路該應用的每個請求,進而實作系統日志。