監聽器的概念
所謂監聽器就是對內置對象的狀態或者屬性變化進行監聽並且做出反應的特殊servlet,並且也需要在web.xml文件中進行相關配置。
內置對象的狀態變化:初始化和銷燬,也就是說當內置對象初始化、銷燬我們也能監聽,並且做出相應的反應。
內置對象內得屬性變化:增加、刪除、修改的操作也能被監聽並做出反應
監聽request內置對象
- 首先創建request監聽器,不同的監聽器,需要不同的接口,request內置對象的監聽器接口“javax.servlet.ServletRequestListener”。
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.annotation.WebListener;
//註解配置
@WebListener
public class RequestListener implements ServletRequestListener {
@Override
public void requestDestroyed(ServletRequestEvent sre) {
// 監聽request銷燬後的做出的反應
System.out.println("銷燬request內置對象");
}
@Override
public void requestInitialized(ServletRequestEvent sre) {
// 監聽request初始化後的反應
System.out.println("創建request內置對象");
}
}
-
由於代碼使用了註解配置,我就不用再去web.xml裏面進行設置配置。web.xml裏面的配置如下
-
進行簡單的測試,測試代碼如下:
//這裏是註解配置
@WebServlet(urlPatterns= {"/emp/*"})
public class EmpServlet<V> extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
}
}
在瀏覽器的地址欄輸入:http://localhost/+項目路徑
測試結果如下:
結果可以說明,request的初始化,銷燬過程都被監聽到了,並且監聽器也做出了反應。
監聽器的種類用途
監聽器有八種類型
Listener接口 | Event類 |
---|---|
ServletContextListener | ServletContextEvent |
ServletContextArrtibuteListener | ServletContextAttributeEvent |
HttpSessionListener | HttpSessionEvent |
HttpSessionActivationListener | |
HttpSessionAttributeListener | HttpSessionBindingEvent |
HttpSessionBindingListener | |
ServletRequestListener | ServletRequestEvent |
ServletRequestAttributeListener | ServletRequestAttributeEvent |
監聽器的平常用途
- 統計在線人數
- 加載初始化信息
- 統計網站訪問量
- 實現訪問監控