1. 程式人生 > >spring-boot通過HttpSessionListener監聽器統計線上人數

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>