listener是基于观察者模式设计的,是Servlet的监听器,它可以监听客户端的请求、服务端的操作等,通过监听器,可以自动激发一些操作。
listener与event对应关系如下:
Listener接口 | Event类 |
ServletContextListener | ServletContextEvent |
ServletContextAttributeL | ServletContextAttributeE |
HttpSessionListener | HttpSessionEvent |
HttpSessionActivationLis | HttpSessionEvent |
HttpSessionAttributeList | HttpSessionBindingEvent |
HttpSessionBindingListen | HttpSessionBindingEvent |
ServletRequestListener | ServletRequestEvent |
ServletRequestAttributeL | ServletRequestAttributeE |
servlet事件监听主要有3类:
(1)监听servletContext
监听ServletContext对象的创建和删除以及属性的添加、删除和修改等操作,主要用到ServletContextListener、ServletContextAttributeL
(2)监听http会话
可以监听Http会话活动情况、Http会话中属性设置情况,也可以监听Http会话的active、paasivate情况等,主要用到HttpSessionListener、HttpSessionActivationLis
(3)监听客户度请求
监听request请求,主要用到ServletRequestListener、ServletRequestAttributeL
我们来看一个监听servletContext创建的例子,
public class MyServletContextListener implements ServletContextListener{
@Override
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
System.out.println("servletContext destroyed");
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
// TODO Auto-generated method stub
System.out.println("initial Context");
}
}
配置xml
<listener>
<listener-class>com.test.servlet.listener.MyServletContextListener</listener-class>
</listener>
启动服务器,会发现输出了initial Context,说明我们监听到在tomcat服务器启动时已经加载了servletContext。