Spring boot通过HttpSessionListener监听器统计在线人数的实现代码
首先说下,这个统计在线人数有个缺陷,一个人在线可以同时拥有多个session,导致统计有一定的不准确行。
接下来,开始代码的编写,
第一步:实现HttpSessionListener中的方法,加上注解@WebListener
@WebListener publicclassSessionListenerimplementsHttpSessionListener{ publicvoidsessionCreated(HttpSessionEventarg0){ //TODOAuto-generatedmethodstub ServletContextcontext=arg0.getSession().getServletContext(); if(context.getAttribute("count")==null){ context.setAttribute("count",0); }else{ intcount=(Integer)context.getAttribute("count"); context.setAttribute("count",count+1); } } publicvoidsessionDestroyed(HttpSessionEventarg0){ //TODOAuto-generatedmethodstub ServletContextcontext=arg0.getSession().getServletContext(); if(context.getAttribute("count")==null){ context.setAttribute("count",0); }else{ intcount=(Integer)context.getAttribute("count"); if(count<1){ count=1; } context.setAttribute("count",count-1); } HttpSessionsession=arg0.getSession(); Stringname=(String)session.getAttribute("name"); HashSetnameSet=(HashSet )context.getAttribute("nameSet"); nameSet.remove(name); } }
第二步:控制创建session放入对象
HttpSessionsession=request.getSession(); session.setAttribute("name",name); Objectcount=context.getAttribute("count"); if(count==null){ count=0; }
第三步:启动类加上注解@ServletComponentScan,这样才能扫描到监听器
说明,此代码适用于spring-boot开发
简单说下,javaWeb中配置监听器在web.xml中加上
zjq.listener.SessionListener
总结
以上所述是小编给大家介绍的Springboot通过HttpSessionListener监听器统计在线人数的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!