1.Listener(监听器)
Listener是Servlet的监听器。
所谓的监听器是指对整个WEB环境的监听,当被监视的对象(ServletContext)发生情况(生命周期,setAttribute)时,立即调用相应的方法进行处理。
监听器监听客户端的请求和服务器的操作,通过实现Listener接口的类可以在监听到特定事件后激发一些操作。
2.监听器的分类:
(1)按监听的对象划分
- 用于监听应用程序环境对象(ServletContext)的事件监听器。
- 用于监听用户会话对象(HttpSession)的事件监听器。
- 用于监听请求消息对象(ServletRequest)的事件监听器。
(2)按监听的事件类项划分 - 用于监听域对象自身的创建和销毁的事件监听器。
- 用于监听域对象中的属性的增加和删除的事件监听器。
- 用于监听绑定到HttpSession域中的某个对象的状态的事件监听器。**
Tomcat提供了三个对象的监听器
- ServletContextListener
- HttpSessionListener
- ServletRequestListener
分别监听对象的创建和销毁,对象属性的变化,以及监听httpsession中对象的绑定和解绑定。随着web应用的启动而启动,销毁而销毁,只初始化一次。
3.Listener监听三个域对象创建与销毁
(1) ServletContext
利用ServletContextListener监听器在创建ServletContext域对象时完成一些想要初始化的工作或者执行自定义任务调度。
生命周期:
创建:在 Web 服务器启动并加载某个 Web 应用程序时创建相应的ServletContext 对象.
销毁:在 Web 服务器关闭或卸载时为每个 Web 应用程序销毁相应的ServletContext 对象.
@WebListener
public class MyServletContextListener implements ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("初始化");
}
@Override
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("已销毁");
}
}
(2) HttpSession
在每位用户登录网站时都会创建一个HTTPSession对象,可以利用这个统计在线人数。
生命周期:
创建:在浏览器开始与服务器会话时创建。
销毁:在调用HttpSession.invalidate();超过了Sessiond的最大有效时间间隔,服务器进程被停止的时候。
@WebListener
public class MyHttpSessionListener implements HttpSessionListener{
@Override
public void sessionCreated(HttpSessionEvent arg0) {
System.out.println("HttpSession创建了");
}
@Override
public void sessionDestroyed(HttpSessionEvent arg0) {
System.out.println("HTTPSession销毁了");
}
}
(3) ServletRequest
生命周期:
创建:在每次请求开始时创建。
销毁:在每次访问结束后销毁。
@WebListener
public class MyServletRequestListener implements ServletRequestListener{
@Override
public void requestDestroyed(ServletRequestEvent arg0) {
System.out.println("ServletRequest销毁了");
}
@Override
public void requestInitialized(ServletRequestEvent arg0) {
System.out.println("ServletRequest创建了");
}
}