为什么userNumber是全局的?

来源:5-1 统计在线用户及人数

小飞飞要忘记烦恼

2015-03-24 21:27

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

写回答 关注

8回答

  • 慕莱坞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在服务器中是单例

    Silent...

    对,listener一直独立地存在,不受session开启关闭影响,里面的变量自然长期存在

    2019-04-15 13:23:18

    共 1 条回复 >

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

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

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

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

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

    隔壁王爷爷

    服务器把自己也算进去了

    2015-05-21 14:57:33

    共 1 条回复 >

  • 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

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

    Sunsun... 回复小飞飞要忘记...

    session创建之前会先走request。你看另一个request页面,在那个页面从application取值了

    2016-07-13 23:10:47

    共 2 条回复 >

JAVA Web开发技术应用——监听器

本课程从Java Web中的监听器的概念和用途入手,结合实例讲解

76034 学习 · 155 问题

查看课程

相似问题