java通過監聽Session實現統計線上使用者
阿新 • • 發佈:2019-01-11
package com.boventech.learning.listener; import java.util.HashSet; import java.util.Set; import javax.servlet.ServletContextAttributeEvent; import javax.servlet.ServletContextAttributeListener; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionBindingEvent; import com.boventech.learning.constants.Constants; import com.boventech.learning.entity.User; public class SessionListener implements ServletContextAttributeListener, HttpSessionAttributeListener { private static Set<User> onLineUsers = new HashSet<User>();//用於儲存線上使用者 public static Set<User> getOnLineUsers() { return onLineUsers; } //session建立後觸發 ,將使用者資訊新增到靜態的集合中 public void attributeAdded(HttpSessionBindingEvent arg0) { if(arg0.getName().equals(Constants.USER_KEY)){ onLineUsers.add((User)arg0.getValue()); } } //清除session時觸發 public void attributeRemoved(HttpSessionBindingEvent arg0) { if(arg0.getName().equals(Constants.USER_KEY)){ onLineUsers.remove((User)arg0.getValue()); } } //session被替換時觸發 public void attributeReplaced(HttpSessionBindingEvent arg0) { if(arg0.getName().equals(Constants.USER_KEY)){ onLineUsers.add((User)arg0.getValue()); } } public void attributeAdded(ServletContextAttributeEvent arg0) { } public void attributeRemoved(ServletContextAttributeEvent arg0) { } public void attributeReplaced(ServletContextAttributeEvent arg0) { } }
<listener>
<listener-class>com.boventech.learning.listener.SessionListener</listener-class>
</listener>