那我就奇怪了,session,application,setvletcontext三者好像都可以当作全局变量用,有什么区别,如果功能是一样的,为什么不进行合并呢

解决方案 »

  1.   

    我现在知道session和setvletcontext有这么个区别,session可以认为让它消亡,但是setvletcontext只要连接存在就一直存在.对嘛?还有其他的区别嘛?
      

  2.   

    如何统计在线人数,统计在线人数(及其信息),就是统计现在有多少个Session实例存在,我们可以增加一个计数器(如果想存储更多的信息,可以用一个对象来做计数器,随后给出的实例中,简单起见,用一个整数变量作为计数器),通过在valueBound方法中给计数器加1,valueUnbound方法中计数器减1,即可实现在线人数的统计。当然,这里面要利用到ServletContext的全局特性,新建一个监听器,并将其实例存入ServletContext的属性中,以保证此监听器实例的唯一性,当客户登录时,先判断ServletContext的这个属性是否为空,如果不为空,证明已经创建,直接将此属性取出放入Session中,计数器加1;如果为空则创建一个新的监听器,并存入ServletContext的属性中。如果用数据库做了标记就用不到servletContext了吧