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监听器统计在线人数的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!