1.监听器
1.Servlet监听器是Servlet规范中定义的一种特殊类,用于监听ServletContext、HttpSession和ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中属性发生修改的事件。
2.监听器分类
1.按监听对象分类:
- 用于监听应用程序对象(ServletContext)application;
- 用于监听用户会话对象(HttpSession);
- 用于监听请求消息对象(ServletRequest)。
public class ObjectListener implements ServletContextListener, ServletRequestListener, HttpSessionListener {
/**
* 监听ServletContext对象创建
*/
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("ServletContext对象创建了");
ServletContext application = sce.getServletContext();//整个应用程序中只有一个对象
application.setAttribute("config","123");//设置初始化数据
application.setAttribute("config","234");
application.removeAttribute("config");
}
/**
* 监听ServletContext对象销毁
*/
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("ServletContext对象销毁了");
}
/**
* ServletRequest对象销毁
* @param sre
*/
long s;
@Override
public void requestDestroyed(ServletRequestEvent sre) {
System.out.println("ServletRequest对象销毁了");
HttpServletRequest request = (HttpServletRequest)sre.getServletRequest();
System.out.println(request.getRemoteAddr()+"请求耗时:"+(System.currentTimeMillis()-s));
}
/**
* ServletRequest对象创建
* @param sre
*/
@Override
public void requestInitialized(ServletRequestEvent sre) {
System.out.println("ServletRequest对象销毁了");
s = System.currentTimeMillis();
}
/**
* HttpSession对象创建
* @param se
*/
@Override
public void sessionCreated(HttpSessionEvent se) {
System.out.println("session对象创建了");
}
/**
* HttpSession对象销毁
* @param se
*/
@Override
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("session对象销毁了");
}
}
2.按监听事件分类:
- 监听对象的创建和销毁的事件监听;
- 监听对象属性变更(添加、修改、移除)的监听器。
3.监听器接口
1.Servlet API中定义了监听器接口,用来监听不同的事件类型:
- ServletContextListener:上下文监听器;
- ServletContextAttributeListener:上下文属性监听器;
- ServletRequestListener:请求监听器;
- ServletRequestAttributeListener:请求属性监听器;
- HttpSessionListener:会话监听器;
- HttpSessionAttributeListener:会话属性监听器。
4.创建监听器
1.创建监听器类,实现监听器接口,在web.xml文件中配置监听器类。
<listener>
<listener-class>
监听器类全类名
</listener-class>
</listener>