web监听器
web监听器: 是一些实现特定接口的java程序,用于监听web开发中常用的对象(ServletContext,ServletRequest,HttpSession)的创建和销毁行为,以及这些对象的属性修改行为(setAttribute,removeAttribute)。
监听器也叫Listener,是servlet的监听器,可以用于监听Web应用中某些对象,信息的创建,销毁,增加,修改,删除等动作的发生,然后做出相应的响应处理。当范围对象的状态发生变化时,服务器自动调用监听器对象中的方法,常用于统计在线人数和在线用户,系统加载时进行信息初始化,统计网站的访问量等。
SpringBoot使用事件监听器的流程
简单事件监听流程:
1.自定义事件,一般是继承ApplicationEvent抽象类
2.定义事件监听器,一般是实现ApplicationListener接口
3.启动的时候,需要把监听器加入到spring容器中
4.发布事件:ApplicationContext.publishEvent发布事件
配置监听器的方法
1.context.addApplicationListener(new Mylistener())
2.把监听器加入到spring容器中管理
3.在application.properties文件中使用context.listenser.classes配置配置项在配置文件中context.listener.classes= com.example.demo.Mylistener
4.使用@EventListener注解,在方法上面加入@EventListener注解,同时该类需要纳入到spring容器中管理
事件源
事件源 | 事件对象 | web监听器 |
ServletContext对象 | ServletContextEvent(创建和销毁) | ServletContextListener接口 |
ServletContext对象属性 | ServletContextAttributeEvent(增加,修改,删除) | ServletContextAttirbuteListener接口 |
ServletRequest对象 | ServletRequestEvent(创建和销毁) | ServletRequestListener接口 |
ServletReuqest对象属性 | ServletRequestAttributeEvent(增加,修改,删除) | ServletRequestAttributeListener接口 |
HttpSession对象 | HttpSessionEvent(创建和销毁) | HttpSessionListener接口 |
HttpSession对象属性 | HttpSessionBindingEvent(增加,修改,删除) | HttpSessionAttributeListener接口 |
ServletContextListener:
用于监听SevletContext对象的创建和销毁行为。 ServletContext对象
创建: 加载当前的web项目的时候;
销毁: 关闭服务器或者重新部署web项目
ServletContextAttirbuteListener:
用于监听ServletContext对象属性的增加,修改,删除行为
增加: setAttribute("name",Object);
修改: setAttribute("name",Object); //把同名的属性进行修改
删除: removeAttribute("name");
ServletRequestListener
用于ServletReuqest对象(request请求对象)的创建和销毁行为。
ServletRequest对象
创建:用户每次发出请求的时候都会创建一个请求对象
销毁:完成整个请求之后请求对象销毁
ServletRequestAttributeListener
用于监听ServletRequest对象的属性增加,修改,删除
增加: setAttribute("name",Object);
修改: setAttribute("name",Object); //把同名的属性进行修改
删除: removeAttribute("name");
HttpSessionListener :
用于监听HttpSession对象的创建和销毁行为
HttpSession对象
创建:调用requset.getSession(true)方法
销毁:
1)默认情况下,等待30分钟,服务器自动回收session对象
2)session.setMaxInactiveInterval(秒数) 设置服务器回收session的时间
全局设置:
<session-config>
<session-timeout>分种数</session-timeout>
<session-config>
3)session.invalidate() : 手动销毁session对象
HttpSessionAttribtuteListener:
用于监听HttpSession对象的属性增加。修改,删除
案例:统计当前网站的登录用户信息
1)用户可以登录本网站,用户也退出本网站
2)用户登录成功网站后,可以查询当前网站在线的登录用户信息。
3)管理员可以踢出某个已经登录的用户。
小结:
六个三对监听器
分别监听
ServletContext对象
创建和销毁
属性增加,修改,删除
ServletRequest对象
创建和销毁
属性增加,修改,删除
HttpSession对象
创建和销毁
属性增加,修改,删除
应用:
显示当前网站的登录用户信息
需求:
1)提供用户登录的功能,提供注销功能。
2)显示当前网站的所有登录用户信息
3)管理员可以踢除指定的登录用户。