不同范围的javabean的生命周期有什么不同

Python015

不同范围的javabean的生命周期有什么不同,第1张

JavaBean的生命周期存在于4中范围之中,分别为page、request、session、application,它们通过<jsp:userBean>标签的sope属性进行设置,与jsp页面中的page、request、session、application范围相对应。

1、page 范围:与当前页面相对应,JavaBean的生命周期存在于一个页面之中,当页面关闭时javaBean被销毁

2、request 范围:与JSP的request生命周期相对应,JavaBean的生命周期存在于request对象之中,当request对象销毁时JavaBean也被销毁

3、session范围:与JSP的session生命周期相对应,JavaBean的生命周期存在于session回话之中,当session超时或回话结束时JavaBean被销毁

4、application范围:与JSP的application生命周期相对应,在各用户与服务器之间共享,只有当服务器关闭时JavaBean才被销毁

当JavaBean被创建后,通过<jsp:setProperty>标签与<jsp:getProperty>标签调用时,将会按照page、request、session、application的顺序来查找这个JavaBean实例,直到找到一个实例对象为止,如果都找不到,则抛出异常。

对象的生命周期一般来就是看他是否没有被任何一个引用所引用了,那他就是生命终结了。这个就是比如一些方法中定义的对象在走出大括号有效作用范围,或者是走出方法,或者是你把唯一的引用赋值给其他对象了,那对应的对象生命周期就到了,注意这只是说一般情况,就是这个对象的finalize方法没有让自己这个对象起死回生的的时候他就死了。

finalize这个方法是可以让这个已经要死的对象重新活过来的。就是给一个对象一次反悔的机会,但是如果你放弃了那就是真的死了。

对象的生存周期就是当这个对象没有被任何引用指向的时候,他就是孤儿了,那他就到了一个关口,如果finalize方法也不复活,那就认为他死了。关键是这个对象有没有没人认领,要是没人认领,而且自己不找个干妈干爸,那他就是真活到头了。一些匿名对象是new完就立刻死了,因为匿名对象出生的目的就是之用一次就丢掉的,所以这个匿名是java所有对象里最悲剧的一个角色,用之即弃。而最尊贵的对象就是常量对象,这个是一生只伺候一个主人,也是用情专一的对象啊,一辈子就这一个。

1.存储区域不同:静态变量存储在静态存储区,普通变量存储在堆中;\x0d\x0a2.静态变量与类相关,普通变量则与实例相关,说细一点:\x0d\x0aclass Demo {\x0d\x0apublic static String a\x0d\x0apublic String b\x0d\x0apublic static void main(String[] args) {\x0d\x0a Demo d = new Demo()\x0d\x0a d.a// 警告,虽然可以通过编译,但没有意义\x0d\x0a d.b// 正确\x0d\x0a Demo.a// 对static变量的正确引用\x0d\x0a Demo.b// 错误\x0d\x0a}\x0d\x0a3.内存分配方式不同。static字段对每个类来说都只有一份,无论你创建多少对象,该static区域都只有一份,它对于这些对象来说是共享的;而非static字段,因为其从属于对象,因此每有一个对象,就会为该变量申请一个存储空间;\x0d\x0a4.生命周期不同。从程序运行开始,static域就已经确定下来,因此在没有创建对象之前,就可以引用该区域变量及函数,而非static域的变量及函数,必须等实例化之后才可以通过对象来调用。\x0d\x0a5.理解了this之后,更能体会到static的含义。static方法就是没有this的方法,这也就是为什么在static方法中不能引用非static变量,因为该方法内没有隐含的this,编译器无从知道这个变量是属于哪一个类的。