欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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监听器统计在线人数的实现代码,希望对大家有所帮助