问答详情
源自:5-8 JavaBean四个作用域范围

关于双重实例化的问题

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

求解答~~

提问者:笨鸟欲飞4273171 2017-02-02 16:40

个回答

  • qq_这是只仓鼠_0
    2017-03-02 12:39:50

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

  • StefanLee2015
    2017-02-15 17:01:00

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

    总结而言,关于作用域:

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

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

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

  • 驴是的念来过倒
    2017-02-04 15:55:45

    楼主很细心,同问