码迷,mamicode.com
首页 > 其他好文 > 详细

监听器

时间:2018-10-20 19:41:37      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:lis   配置   第一个   ali   初始   ica   记录访问日志   在线用户   判断   

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中

监听器

标签:lis   配置   第一个   ali   初始   ica   记录访问日志   在线用户   判断   

原文地址:https://www.cnblogs.com/xgzzzy16/p/9822591.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!