public class OnlineCounter { 
    private static long online = 0;     
    public static long getOnline() { 
        return online; 
    }     
    public static void raise(){ 
        online++; 
    }  
    public static void reduce(){ 
        online--; 
   } 

import javax.servlet.http.HttpSessionEvent; 
import javax.servlet.http.HttpSessionListener; 
public class OnlineCounterListener implements HttpSessionListener { 
    public void sessionCreated(HttpSessionEvent hse) { 
        OnlineCounter.raise(); 
    } 
    public void sessionDestroyed(HttpSessionEvent hse) { 
        OnlineCounter.reduce(); 
    } 

解决方案 »

  1.   

     我根据session的创建次数进行访问量的统计.配置了一个session的监听器.
     但是每次session被访问以后就被销毁了.我设置了arg0.getSession().setMaxInactiveInterval(3600);也没用
     而且还是创建了2次session.在IE没关闭的情况下每再请求一次也会创建2次SESSION.
      

  2.   

    参照上面的例子,是一个统计在线的例子你做访问量统计,这个访问量是怎么算的,会话一次就算一次访问吗,还有服务器的session过期时间考虑下
      

  3.   

    问题不是我监听器不会写.
      是创建了2个session. 而且不关闭浏览器.设置了自动销毁时间的情况下还是会创建session
      

  4.   

    你的ie是不是把cookie关闭了,而你又没有使用encodeUrl方法处理url???
      

  5.   

    不知道...  看cookie在哪里关闭?
      

  6.   

    public void sessionCreated(HttpSessionEvent arg0) {
    // TODO Auto-generated method stub
    if( this.service == null)
    this.setService((StatisticService) SpringContextUtil.getBean("StatisticService"));
                     //设置session过期时间
    arg0.getSession().setMaxInactiveInterval(3600);
    System.out.println(arg0.getSession().getId());

    Statistic statistic;
    Object statisticObj=arg0.getSession().getServletContext().getAttribute("statistic");    
                    //判断今天是否已经开始监听
    if( statisticObj == null ){
                            //找出今天的统计
    String date = StrTool.formatDate(new Date());
    ConditionBlock block = new ConditionBlock();
    block.and(new ConditionLeaf("statisticDate",ConditionLeaf.EQ,date,false,","));
    List list = this.getService().findObjectsByCondition(block, null);
    if( !list.isEmpty())
    {
    statistic = (Statistic)list.get(0);
    statistic.setStatisticTotal(statistic.getStatisticTotal()+ADD_VALUE);
    this.service.update(statistic);
    }
                            
    else
    {
    statistic = new Statistic();
    statistic.setStatisticName("当日");
    statistic.setStatisticDate(date);
    statistic.setStatisticTotal(ADD_VALUE);
    this.service.add(statistic);
    }

    }
    else
    {
    statistic = (Statistic)statisticObj;
    statistic.setStatisticTotal(statistic.getStatisticTotal()+ADD_VALUE);
    this.service.update(statistic);
    }
                    
    arg0.getSession().getServletContext().setAttribute("statistic", statistic);
    Long statisticTotal = this.getService().getStatisticTotal();
    arg0.getSession().getServletContext().setAttribute("statisticTotal",statisticTotal);
    }
      

  7.   

    统计总访问量还有当天的访问量.
    问题不是别的. 是创建了几个session.
      

  8.   

         哎.... 到现在都没搞清楚是怎么回事.
      我朋友那就创建一个SESSION我这创建2,3个...