问答详情
源自:5-1 统计在线用户及人数

为什么userNumber是全局的?

为什么userNumber是全局的?httpSessionListener不是对session的监控吗?session是用户的会话级别,应该每一个用户都有一个userNum才对呀,这样的话userNumber每次都会初始化猜对呀,想不通。我的想法是在sessionCreatred方法里面先获取application中的userName,然后再++

提问者:小飞飞要忘记烦恼 2015-03-24 21:27

个回答

  • 慕莱坞1654752
    2020-05-07 23:43:09

    Listener 是单例的呀,老师的ppt 是不是错了? 应该是 一个HttpSessionListener 监听多个HttpSession?

    http://img.mukewang.com/5eb42c5c0001563e08980533.jpg

  • 慕移动8869045
    2016-06-07 22:50:25

    Session是有多个,但是Listener只有一个,而userNumber是Listener的成员变量,所以是唯一的

  • 星际怪物
    2015-06-04 10:53:52

    另外这个Listener在服务器中是单例

  • 星际怪物
    2015-06-04 10:48:44

    getServletContext().setAttribute(),每次都放到ServletContext里,自然是全局的了.

  • 小Ao迪
    2015-04-08 15:43:39

    http://img.mukewang.com/5524dc150001dd3208430232.jpg

    我运行,我滴userNumber就是3,为啥

  • xingoo
    2015-03-30 14:10:44

    你也说了,userNumber是私有的。本类使用的,所以当有一个会话开启时,就会使用到该类的方法,运行userNumber++;因此,会造成一种是全局变量的假象。

    但是本质上是一个类私有的变量,该类在每次调用方法时,都是使用的同一个对象。

  • ybbzbb
    2015-03-25 12:06:50

    它不是在上面定义了吗?

    private int userNumber;

    private的意思是私有的,在这个本类中可以随意的使用啊。

  • ybbzbb
    2015-03-24 22:12:54

    你要达到什么样的效果啊?