监听器,是JavaWeb三大组件之一,用于监听JavaWeb程序中的事件,例如创建、修改、删除Session、request、context等,并触发响应事件
不同功能的监听器,需要实现不同的Listener接口,一个监听器也可以实现多个Listener接口,实现不同的功能
监听器分类 | 监听器名称 | 作用 |
---|---|---|
ServletContext监听 | ServletContextListener | 用于对ServletContext对象进行监听(创建、销毁) |
ServletContext监听 | ServletContextAttributeListener | 对ServletContext对象中属性的监听(增删改) |
Session监听 | HttpSessionListener | 对Session对象的整体状态的监听(创建、销毁) |
Session监听 | HttpSessionAttributeListener | 对Session对象中的属性监听(增删改) |
Session监听 | HttpSessionBindingListener | 监听对象于Session的绑定和解除 |
Session监听 | HttpSessionActivationListener | 对Session数据的钝化和活化的监听 |
Request监听 | ServletRequestListener | 对Request对象进行监听(创建、销毁) |
Request监听 | ServletRequestAttributeListener | 对Request对象中属性的监听(增删改) |
package top.ygang.listener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class MyListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent se) {
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
}
}
<listener>
<listener-class>top.ygang.listener.MyListener</listener-class>
</listener>
@WebListener
@WebListener
public class MyListener implements HttpSessionAttributeListener,HttpSessionListener{
//监控网站新增登录
@Override
public void attributeAdded(HttpSessionBindingEvent se) {
ServletContext servletContext = se.getSession().getServletContext();
Integer loginCount = (Integer) servletContext.getAttribute("loginCount");
if (loginCount == null){
servletContext.setAttribute("loginCount",1);
}else {
servletContext.setAttribute("loginCount",loginCount + 1);
}
}
//监控网站退出登录
@Override
public void sessionDestroyed(HttpSessionEvent se) {
ServletContext servletContext = se.getSession().getServletContext();
Integer loginCount = (Integer) servletContext.getAttribute("loginCount");
servletContext.setAttribute("loginCount",loginCount - 1);
}
}