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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!