监听器 统计在线人数

用application 比较合适 大家都能看到
监听器是 servlet 的一种特例,对整个web 环境的监听

ServletContext是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放。
为了节省空间,提高效率,ServletContext中,要放必须的、重要的、所有用户需要共享的,线程又是安全的一些信息。如,做一个购物类的网站,要从数据库中提取物品信息,如果用session保存这些物品信息,每个用户都访问一次数据库,效率就太低了;所以要用来Servlet上下文来保存,在服务器开始时,就访问数据库,将物品信息存入Servlet上下文中,这样,每个用户只用从上下文中读入物品信息就行了。

对对象进行监听,不需要写 mapping


com.bj.listener.ServletContextDemo


有两个方法
在这里插入图片描述
容器启动时就进行初始化操作

把ServletContext 当成application
private ServletContext application =null;

application=sce.getServletContext();
当前项目路径: application.getContextPath();

application.getRealPath("/");

3.对ServletContext监听 实现 ServletContextListener 接口
在这里插入图片描述
这些信息每个人都能访问到 把他存到ServletContext 中

监控servletContext中属性的变化,还要实现ServletContextAttributeListener:对Servlet上下文属性的监听

在这里插入图片描述

测试
this.getServletContext().setAttribute(“name”,“tom”);
在这里插入图片描述

在这里插入图片描述

说明已经拿到用户,然后将用户名加入用户列表字符数组中;
session 监听器也是一样的

要统计一个网站的在线人数,首先,可以通过ServletContextListener监听,当Web应用上下文启动时,在ServletContext中添加一个List,用来准备存放在线的用户名;然后,可以通过HttpSessionAttributeListener监听,当用户登录成功把用户名设置到Session中时同时将用户名存放到ServletContext中的List列表中;最后通过HttpSessionListener监听,当用户注销会话时将用户名从应用上下文范围中的List列表中删除。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
用户登录的时候把用户名添加到userlist ,再把userlist放到application中

在这里插入图片描述

要用两个浏览器做测试 因为同一个浏览器的session是一样的
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值