请问各位使用java web开发的前辈,servlet的成员变量用于统计servlet的访问次数的时候,与使用ServletContext相比,有什么区别呢?
或者换句话说,这两种方式,各有什么优缺点和应用呢?

解决方案 »

  1.   

    用ServletContext好。用Servletcontext对磁盘操作次数非常少,根据servlet的生命周期可以知道
    用servletContext的话,只需在init的时候把数据读取出来,在destroy的时候把数据存入进去。而如果用servlet的成员变量的对磁盘的操作次数非常多。
      

  2.   

    入库吧
    除非你的服务器永久处于运行状态,要不然不管你是用Servlet上下文还是用类成员变量都是浮云!!
      

  3.   

    不论是用ServletContext还是成员变量,最后统计数据都是需要在destroy()方法中写入数据库的,可是问题是,写入数据库之前,在服务器的内存中,是通过ServletContext来保存还是通过类成员变量来保存更好呢?
      

  4.   

    入库吧
    除非你的服务器永久处于运行状态,要不然不管你是用Servlet上下文还是用类成员变量都是浮云!!
      

  5.   

    全局的信息,到底是用servlet的类变量来储存,还是application来储存比较好,哪位前辈可以给个定论?当然前提是,不管用哪种,在destroy的时候都是会入库的
      

  6.   


    存servletcontext。
    至少要定期存库。除非你能保证每次都是正常关闭,要是服务器进程死了,谁来执行destroy方法
      

  7.   

    小应用直接servlet写数据库
    稍大的用apache写日志,然后写个服务计算。
      

  8.   

    肤浅??呵呵。。直接用Servlet成员变量会有线程安全问题,导致在线计数统计不精确。而且计数通常要用long型,那就更夸张了。由于java内部只支持32位的写入,那么写一个long型可能需要两次写入,为了优化可能会启动两个线程。那么会导致取到的long型是随机值。用ServletContext会不会有这个问题不知道。只是成熟的framework,会在变量上加volatile,技术的类型用java.util.concurrent.atomic.AtomicLong;
      

  9.   

    最后定论貌似大家一边倒的支持用ServletContext了?