天天看點

Session的監聽,統計網站線上人數

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class OaSessionListener implements HttpSessionListener {

	@Override
	public void sessionCreated(HttpSessionEvent arg0) {
		HttpSession session = arg0.getSession();
		ServletContext application = session.getServletContext();
		// 把使用者名放入線上清單,在application範圍有一個List集儲存所有的Session
		List onlineUserList = (List) application.getAttribute("onlineUserList");
		// 第一次使用前,需要初始化
		if (onlineUserList == null) {
			onlineUserList = new ArrayList();
			application.setAttribute("onlineUserList", onlineUserList);
		}
		// 新建立的session均添加到List集中
		onlineUserList.add(onlineUserList);
		System.out.println("目前線上人數:" + onlineUserList.size() + "人");
	}

	@Override
	public void sessionDestroyed(HttpSessionEvent arg0) {
		HttpSession session = arg0.getSession();
		ServletContext application = session.getServletContext();
		List onlineUserList = (List) application.getAttribute("onlineUserList");
		 //銷毀的session均從List中移除
		onlineUserList.remove(onlineUserList);
		System.out.println("使用者退出或登入逾時之後使用者線上人數:" + onlineUserList.size() + "人");

	}

}