监听器

1 监听器的定义

Servlet规范中定义的一种特殊类

用于监听ServletContext HttpSeesion 和 - - ServletRequest等域对象的创建与销毁事件

用于监听域对象的属性发生改变的事件

可以在事件发生前、发生后做一些必要的处理

2 监听器的用途

统计在线人数和在线用户

系统启动时加载初始化信息

统计网站访问量

跟spring结合

3 第一个实例讲解

步骤:

1.创建一个实现监听器接口的类
// 创建一个实现接口xxxListenner的类
public class FirstListenner implements ServletContextListener {
// 自动重写里面的方法
@Override
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("contextDestroyed");
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("contextInitialized");
}
}
2.配置web.xml进行注册或者在类上面加注解@WebListener(3.0以上版本才能用)
<listener>
<listener-class>com.fs.listenner.FirstListenner</listener-class>
</listener>
监听器的启动顺序:

1.web.xml可以注册多个监听器,他的加载顺序是按照注册顺序来的
2.web.xml里面可以注册监听器、过滤器(拦截器是spring的功能)、servlet,他们的加载顺序是:监听器>过滤器>servlet
4 监听器的分类

按监听的对象划分

1.用于监听应用程序环境对象(ServletContext--主要用于获取和设置全局属性配置)的事件监听器
2.用于监听用户会话对象(HttpSession--统计在线人数、记录访问日志)的事件监听器
3.用于监听请求消息对象(ServletRequest--读取参数、记录访问历史)的事件监听器
按监听的事件划分

1.监听域对象自身的创建和销毁的事件监听器
2.监听域对象中的属性的增加或删除的事件监听器
3.监听绑定到HttpSession域中的某个对象的状态的事件监听器
要监听对象的绑定<-->解除绑定,那么该类就要实现HttpSessionBindingListerner接口
要监听对象的钝化<-->活化(内存<-->硬盘),那么该类就要实现HttpSessionActivationListener和Serialization接口
5 实际项目中常用案例:统计在线人数及用户

逻辑:

1.统计在线人数很简单:
创建一个session监听类
定义一个数字代表在线人数
当session创建时++
当session销毁时--
把这个数字放到application中,这样就可以从application中取出在线人数了
2.统计用户
如何确定一个用户呢?ip地址。如何获得ip地址呢?那就要通过request了
创建一个request监听类、用户类(ip,createTime,sessionId)
定义一个List<user>
当request创建的时候,我们先要判断seesionId是否存在,如果不存在,就要创建一个user放到List中
而要移除user,得session销毁时才表示该用户不活跃了,所以移除user的在session中去进行
将List放到application中

转载于:https://www.cnblogs.com/xgzzzy16/p/9822591.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值