iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >JavaWeb Listener 利用Session统计在线人数
  • 544
分享到

JavaWeb Listener 利用Session统计在线人数

2024-04-02 19:04:59 544人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录一.监听器Listener1.1 Listener的作用1.2 小demo之统计在线人数1.3 统计结果错误原因分析一.监听器Listener 1.1 Listener的作用 L

一.监听器Listener

1.1 Listener的作用

Listener是一个功能组件,在创建、销毁或添加、修改或删除应用程序、会话和请求对象的属性时自动执行代码。

监听器是servlet的监听器,它可以监听客户端的请求和服务器的操作。

可以使用application,session,request这三个对象

1.2 小demo之统计在线人数

1.新建omline,继承类httpsessionListener,重写sessionCreated和sessionDestroyed方法:

public class omline implements HttpSessionListener {
    public void sessionCreated(HttpSessionEvent se) {
    }
    public void sessionDestroyed(HttpSessionEvent se) {
    }
}

2.对于sessionCreated方法:

创建Session监听,可以查看用户的一举一动。一旦创建Session就会触发这个方法!

对于sessionDestroyed方法:

销毁session监听。一旦销毁Session就会触发这个方法!

3.创建servletContext对象,新建OnlineCount键值对。

ServletContext servletContext = se.getSession().getServletContext();
Integer omlinecount = (Integer) servletContext.getAttribute("OnlineCount");

判断当前在线人数,如果omlinecount为空的话,更新当前的在线人数为1。

if(omlinecount==null){
    omlinecount=new Integer(1);
}

如果现在人数不为空的话,将当前的人数加一。

else{
    int count = omlinecount.intValue();
    omlinecount=new Integer(count+1);
}

将当前人数存入键值对:

servletContext.setAttribute("OnlineCount",omlinecount);

4.销毁session监听:

前面的代码基本一样,唯一不同的是,对于空值的判断和非空的人数计算。

对于当前对象为空时,将其赋值为0。

if(omlinecount==null){
    omlinecount=new Integer(0);
}

当其不为0时,将其人数减一:

else{
    int count = omlinecount.intValue();
    omlinecount=new Integer(count-1);
}

5.注册监听器,注册监听器只需要一句话,如下:

<listener>
    <listener-class>main.java.omline</listener-class>
</listener>

6.在访问的主页面写下jsp语句,引入java对象的值,实现输出当前的在线人数。

<h2>
    当前有<span><%=this.getServletConfig().getServletContext().getAttribute("OnlineCount")%>人在线</span>
</h2>

7.启动服务器,访问主页,得到结果如下:

1.3 统计结果错误原因分析

寻找原因,找到omline里的sessionCreated方法,写一下输出所有Session的ID

System.out.println(se.getSession().getId());

运行项目,观察输出台:

9DF74823455F36EDA429B31938B5EEE5
2D248509C732D5C448DA1E57BE539E97

打开F12,网络查看该用户的Session:

可以看到,现在的Session是控制台输出的最后一个,说明第一个链接失败,已经被销毁了。

如果我们重新发布改页面:

刷新改页面,继续打开Session观察如下:现在就变为了一人!

注意:

如果我们使用一个游览器两个页面都访问该路径,还是属于一个任务的,在线人数算做一人。

如果我们打开不同的游览器来访问该url,这个这时候就会算做不同的用户,分配不同的Sessionid给用户。

步骤:

1.实现监听器的接口。重写里面的方法!

2.配置监听器(xml里注册监听器)。

以上就是javaweb Listener 利用Session统计在线人数的详细内容,更多关于JavaWEB Listener Session统计在线人数的资料请关注编程网其它相关文章!

--结束END--

本文标题: JavaWeb Listener 利用Session统计在线人数

本文链接: https://www.lsjlt.com/news/166836.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作