Spring boot通过HttpSessionListener监听器统计在线人数的实现代码
程序员文章站
2023-11-17 16:52:40
首先说下,这个统计在线人数有个缺陷,一个人在线可以同时拥有多个session,导致统计有一定的不准确行。
接下来,开始代码的编写,
第一步:实现httpsessionl...
首先说下,这个统计在线人数有个缺陷,一个人在线可以同时拥有多个session,导致统计有一定的不准确行。
接下来,开始代码的编写,
第一步:实现httpsessionlistener中的方法,加上注解@weblistener
@weblistener public class sessionlistener implements httpsessionlistener{ public void sessioncreated(httpsessionevent arg0) { // todo auto-generated method stub servletcontext context = arg0.getsession().getservletcontext(); if (context.getattribute("count")==null) { context.setattribute("count", 0); }else { int count = (integer) context.getattribute("count"); context.setattribute("count", count+1); } } public void sessiondestroyed(httpsessionevent arg0) { // todo auto-generated method stub servletcontext context = arg0.getsession().getservletcontext(); if (context.getattribute("count")==null) { context.setattribute("count", 0); }else { int count = (integer) context.getattribute("count"); if (count<1) { count = 1; } context.setattribute("count", count-1); } httpsession session = arg0.getsession(); string name = (string) session.getattribute("name"); hashset<string> nameset = (hashset<string>) context.getattribute("nameset"); nameset.remove(name); } }
第二步:控制创建session放入对象
httpsession session = request.getsession(); session.setattribute("name", name); object count = context.getattribute("count"); if (count==null) { count = 0; }
第三步:启动类加上注解@servletcomponentscan,这样才能扫描到监听器
说明,此代码适用于spring-boot开发
简单说下,javaweb中配置监听器在web.xml中加上
<listener> <listener-class>zjq.listener.sessionlistener</listener-class> </listener>
总结
以上所述是小编给大家介绍的spring boot通过httpsessionlistener监听器统计在线人数的实现代码,希望对大家有所帮助