java 统计网站访问量&在线人数

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;
	}

}

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值