public class SessionCounter implements HttpSessionListener,
ServletRequestListener {
private static Logger log = Logger.getLogger(SessionCounter.class);//日志记录
private static final String CONTENT_TYPE = "text/html;charset=utf8";//字符集
private static int activeSessions = 0;// 当前活动人数
private HttpServletRequest request;
private static ArrayList list = new ArrayList();// 用于存放不同的ip地址
public void init() throws ServletException {//初始化
log.info("SessionCounter init");
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
log.info("SessionCounter doGet!");
response.setContentType(CONTENT_TYPE);
HttpSession session = request.getSession();
}
@Override
public void requestDestroyed(ServletRequestEvent arg0) {
// TODO Auto-generated method stub
log.info("SessionCounter requestDestroyed!");
}
@Override
public void requestInitialized(ServletRequestEvent sre) {
// TODO Auto-generated method stub
request=(HttpServletRequest)sre.getServletRequest();
log.info("SessionCounter requestInitialized!");
}
@Override
public void sessionCreated(HttpSessionEvent httpSessionEvent) {
// TODO Auto-generated method stub
log.info("SessionCounter sessionCreater!");
String sessionId = httpSessionEvent.getSession().getId();
Timestamp createTime = new Timestamp(System.currentTimeMillis());
String loginIp = request.getRemoteAddr();
boolean rs = true;
if(list.size() > 0){
for(int i = 0;i < list.size(); i ++){
if(loginIp.equals(list.get(i))){
rs = false;
}
}
}
if(rs){ //如果队列中存在相同的IP 则SESSION不增加
list.add(loginIp);
log.info("ipList队列新增ip: "+loginIp);
activeSessions++;
log.info("新增SESSION,sessionId = " + sessionId +"; createTime = " + createTime
+ "; loginIp = " + loginIp +"; 当前总SESSION值为 "+activeSessions);
}
}
@Override
public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
log.info("SessionCounter sessionDestroyed!");
String sessionId = httpSessionEvent.getSession().getId();
Timestamp overTime = new Timestamp(System.currentTimeMillis());
String loginIp = request.getRemoteAddr();
if(activeSessions>0){
if(list.size() > 0){
for(int i = 0;i < list.size(); i ++){
if(loginIp.equals(list.get(i))){
list.remove(i);
log.info("ipList队列移除ip: "+loginIp);
}
}
}
activeSessions--; //在用户销毁的时候,从队列中踢出这个IP
log.info("销毁SESSION,sessionId = " + sessionId +"; overTime = " + overTime
+ "; loginIp = " + loginIp +"; 当前总SESSION值为 "+activeSessions);
}
}
public static int getActiveSessions() {
return activeSessions;
}
public static void setActiveSessions(int activeSessions) {
SessionCounter.activeSessions = activeSessions;
}
}
java 统计网站访问量&在线人数
最新推荐文章于 2024-07-07 03:52:35 发布