监听器(listener)
监听对象的创建与连接
ServletContextListener(这个对象是在服务器启动时创建的,在服务器关闭时销毁)
HttpSessionListener(1.默认30分钟;2.关闭服务器;3.invalidate();4.setMaxInactiveInterval(int interval))
ServletRequestListener(Request对象发送请求服务器就会创建,当响应产生时,request对象就会销毁。)
监听属性的创建与连接
ServletContextAttributeListener
HttpSessionAttributeListener
ServletRequestAttributeListener
![]()
public class MyServletRequestAttributeListener implements ServletRequestAttributeListener {
@Override
public void attributeAdded(ServletRequestAttributeEvent servletRequestAttributeEvent) {
System.out.println("ServletRequest添加属性了");
}
@Override
public void attributeRemoved(ServletRequestAttributeEvent servletRequestAttributeEvent) {
System.out.println("ServletRequest移除属性了");
}
@Override
public void attributeReplaced(ServletRequestAttributeEvent servletRequestAttributeEvent) {
System.out.println("ServletRequest替换属性了");
System.out.println(servletRequestAttributeEvent.getName() + servletRequestAttributeEvent.getValue());
}
}
View Code
监听javaBean 绑定监听(不需要再web.xml中注册)
HttpSessionBindingListener
活化或者钝化(HttpSessionActivationListener如果javaBean实现了这个接口,那么当我们正常关闭服务器时,session中的javaBean对象就会被钝化到我们指定的文件中。
当下一次在启动服务器,因为我们已经将对象写入到文件中,这时就会自动将javaBean对象活化到session中。)
HttpSessionActivationListener
![]()
public class MyServletContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
System.out.println("开始扫描了");
for(Iterator iterator = list.iterator();iterator.hasNext();){
HttpSession session = (HttpSession) iterator.next();
long l = System.currentTimeMillis() -session.getLastAccessedTime();
if(l > 5000){
System.out.println("session已处理"+session.getId());
session.invalidate();
//list.remove(session);
iterator.remove();
}
}
}
}, 2000, 5000);//延迟两秒后执行,间隔5秒执行一次
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
System.out.println("ServletContext销毁了");
}
}
View Code