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 nameSet = (HashSet) 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中加上

 
    zjq.listener.SessionListener  
 
 

你可能感兴趣的:(javaWeb,java)