Listener是Servlet中的一个重要组件,主要用于监听request,session,application三大作用域状态变化,比如session的产生,request中元素的新增,application的启动与销毁等。监听器不需要手动调用,只要有满足条件的 事件产生,则自动执行。
servlet中的监听器主要分为以下三大类:
-
ServletRequest监听
1.ServletRequestAttributeListener >request中属性的产生,移除,替换
2.ServletRequestListener >监听request对象的产生与销毁 -
HttpSession监听
1.HttpSessionAttributeListener >session中属性的产生,移除,替换
2.HttpSessionListener >监听session的产生和销毁 -
ServletContext监听
1.ServletContextAttributeListener >application中属性的产生,移除,替换
2.ServletContextListener >监听整个应用的初始化与销毁监听器创建语法
-
创建普通类实现对应的监听器接口
-
实现接口中的方法
-
配置监听器
1.基于注解的配置
2.基于xml配置
@WebListener
public class OnlineListener implements HttpSessionListener {
private static int counter;
@Override
public void sessionCreated(HttpSessionEvent se) {
//session被创建时执行
System.out.println("session创建-->"+se.getSession().getId());
counter++;
//获取Servlet上下文(application)
ServletContext application = se.getSession().getServletContext(); application.setAttribute("counter",counter);
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
//session被销毁时执行
System.out.println("session销毁==>"+se.getSession().getId());
counter--;
ServletContext application = se.getSession().getServletContext(); application.setAttribute("counter",counter);
}
}
注意事项:
servlet3.0以下的监听器配置需要通过web.xml配置;
<listener> <listener-class>监听器实现类所在的包名</listener-class> </listener>