脚本之家 服务器常用软件
微信 投稿 交流社区 在线工具

Spring boot通过HttpSessionListener监听器统计在线人数的实现代码

转载  发布时间:2018年02月07日 11:24:02   作者:ZhangJQKb   我要评论

这篇文章主要介绍了Spring boot通过HttpSessionListener监听器统计在线人数的实现代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下

首先说下,这个统计在线人数有个缺陷,一个人在线可以同时拥有多个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监听器统计在线人数的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

  • spring
  • boot
  • 监听器
  • 在线人数

相关文章

  • java迭代子模式详解

    这篇文章主要为大家详细介绍了java迭代子模式的相关资料,需要的朋友可以参考下
    2016-02-02
  • ssm框架上传图片保存到本地和数据库示例

    本篇文章主要介绍了ssm框架上传图片保存到本地和数据库示例,主要使用了Spring+SpringMVC+MyBatis框架集合,有兴趣的可以了解一下。
    2017-03-03
  • Java内部类的继承(全)

    这篇文章主要介绍了Java内部类的继承,大家都知道JAVA内部类的构造器必须连接指向其外围类对象的引用,所以在继承内部类的时候,需要在导出类的构造器中手动加入对基类构造器的调用,需要的朋友可以参考下
    2015-07-07
  • 把Java程序打包成jar文件包并执行的方法

    这篇文章主要介绍了把Java程序打包成jar文件包并执行的方法,非常具有实用价值,需要的朋友可以参考下
    2017-10-10
  • Java线程代码的实现方法

    下面小编就为大家带来一篇Java线程代码的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • 浅谈SpringBoot之事务处理机制

    这篇文章主要介绍了浅谈SpringBoot之事务处理机制,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • Spring Boot实战之逐行释义Hello World程序

    spring boot 是基于Spring的一个框架,Spring boot帮我们集成很多常用的功能,使得整个配置更加简单。这篇文章主要介绍了Spring Boot实战之逐行释义Hello World,需要的朋友可以参考下
    2017-12-12
  • 深入理解Mybatis二级缓存

    与一级缓存相比,二级缓存范围更大了一些,可以被多个SqlSession所共用。下面通过本文带领大家一起学习mybatis二级缓存知识,一起看看吧
    2016-12-12
  • java实现随机生成UUID

    这篇文章主要介绍了java实现随机生成UUID的函数代码,有需要的小伙伴可以参考下。
    2015-07-07
  • JAVA线程用法详解

    这篇文章主要介绍了JAVA线程用法,配合实例针对Java中线程的开启、sleep、合并与让出等进行了较为深入的分析,需要的朋友可以参考下
    2014-08-08

最新评论