为了账号安全,请及时绑定邮箱和手机立即绑定

为什么userNumber是全局的?

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

正在回答

8 回答

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

http://img1.sycdn.imooc.com//5eb42c5c0001563e08980533.jpg

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

1 回复 有任何疑惑可以回复我~
#1

Silent_Walke

对,listener一直独立地存在,不受session开启关闭影响,里面的变量自然长期存在
2019-04-15 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//5524dc150001dd3208430232.jpg

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

0 回复 有任何疑惑可以回复我~
#1

隔壁王爷爷

服务器把自己也算进去了
2015-05-21 回复 有任何疑惑可以回复我~

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

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

0 回复 有任何疑惑可以回复我~

它不是在上面定义了吗?

private int userNumber;

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

小飞飞要忘记烦恼 提问者

就是老师的那种效果,我就是想不通为什么他进行++或--运算时用的是全局的变量,总感觉少了【取】这个步骤
2015-03-24 回复 有任何疑惑可以回复我~
#2

SunsunDay 回复 小飞飞要忘记烦恼 提问者

session创建之前会先走request。你看另一个request页面,在那个页面从application取值了
2016-07-13 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么userNumber是全局的?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信