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

关于双重实例化的问题

先前已经通过<jsp:useBean id="myUser" class="Users" scope="application"/>来实例化了一个对象myUser了,为什么超链接后还需要再次实例化一次呢,这不是双重定义了吗,应该是报错的啊,而且就算在超链接后删除实例化对象的语句,依然不会错。

求解答~~

正在回答

3 回答

关于这点我的理解是JSP以页面为单位,同一个页面中不能定义两个ID相同的BEAN ,但是不同一个页面使用同一个bean的ID与其说是声明,感觉上更像是把这个BEAN对象传递过来,本质上应该是同一个,可能是类似于String常量池,不存在这个字符串的时候在里面定义一个,下次别的String变量还用这个值就直接调用而不是创建,这里大概就是不以内容标注而是用ID。

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

应该是同一个对象,这个对象名字都是myUsers,只是同一个对象的属性值在变来变去。但是myUsers对象在页面是有作用域之说的,你试试在dologin的scope改成request,在testScope里的scope改成page,试试?一样得不到,得到null。意思就是说,同一个对象, 作用域不同,不一定能够得到参数。属性因为Request只在一次请求生效,而你用跳转后新页面的page控制了当前属性的作用范围,怎么可以取得Request域的值呢?

总结而言,关于作用域:

1、application整个项目>session整个会话>request一次请求>page当前页面

2、同一个对象的值,大的作用域去取小的作用域就能取到(反过来就不行了)

3、同一作用域,也不能取到,page就是例子

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

楼主很细心,同问


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

举报

0/150
提交
取消

关于双重实例化的问题

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