Java 統計用戶是否在線狀態的代碼
統計登錄用戶是否在線,訪問某個人的空間時,如果空間主人在線,就可以看到他在線的狀態,適合多用戶互動型網站。
監聽器代碼:
import java.util.LinkedList; import java.util.List; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionBindingEvent; /** * Java 統計用戶是否在線狀態 */ public class OnLineUserListener implements HttpSessionAttributeListener { /** * 存放在線用戶列表 */ public static List onLineUserList = new LinkedList(); /** * 根據用戶ID,查詢用戶是否在線 * @param userId 用戶ID * @return true:表示用戶在線 false:表示用戶離線 */ public static boolean findUserOnLine(Integer userId){ return onLineUserList.contains(userId); } /** * 用戶登錄時候,把用戶的信息存到userSession里 * UserSession類的結構很簡單,只有userId,userName兩個屬性 */ @Override public void attributeAdded(HttpSessionBindingEvent se) { if ("userSession".equals(se.getName())){ /** * 用戶上線的話,把用戶的ID,添加到onLineUserList里 */ Integer userId = ((UserSession)se.getValue()).getUserId(); onLineUserList.add(userId); System.out.println("用戶ID:"+userId + " 上線了"); } } @Override public void attributeRemoved(HttpSessionBindingEvent se) { if ("userSession".equals(se.getName())){ /** * 用戶下線的話,把用戶的ID,從onLineUserList中移除 */ Integer userId = ((UserSession)se.getValue()).getUserId(); onLineUserList.remove(userId); System.out.println("用戶ID:"+userId + " 下線了"); } } @Override public void attributeReplaced(HttpSessionBindingEvent se) { // TODO Auto-generated method stub } }
往 web.xml 文件添加監聽器
<!– 監聽用戶狀態 在線或離線 –>
<listener>
<listener-class>com.xxx.util.OnLineUserListener</listener-class>
</listener>
<!–設置會話過期時間為5分鐘 如果不設置,默認是30分鐘–>
<session-config>
<session-timeout>5</session-timeout>
</session-config>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!