scope 的取值范围给出了bean的生命周期(存活时间),即scope 取值决定了Tomcat服务器分配给用户的 bean 的有效范围和生命周期,因此需要理解 scope取值的具体意义。下面就JSP动作标记useBean 中scope取值的不同情况进行说明。
(1) page bean。 scope取值为page的 bean 称为page bean,page bean 的有效范围是用户访问的当前页面,存活时间直到当前页面执行完毕。 Tomcat 服务器分配给每个JSP 页面的page bean 是互不相同的。也就是说,尽管每个JSP页面的page bean 的功能相同,但它们占有不同的内存空间。 page bean 的有效范围是当前页面,当页面执行完毕,Tomcat 服务器取消分配的page bean,即释放page bean所占有的内存空间。 需要注意的是,不同用户(浏览器)的page bean 也是互不相同的。也就是说,当两个用户同时访问同一个JSP页面时,一个用户对自己page bean 的属性的改变,不会影响到另一个用户。
(2) session bean。 scope 取值为session 的bean 称为session bean,session bean 的有效范围是用户访问的Web服务目录下的各个页面,存活时间是用户的会话期(session)间,直到用户的会话消失(session 对象达到了最大生存时间或用户关闭自己的浏览器以及服务器关闭)。 如果用户访问Web服务目录多个页面,那么每个页面id相同的session bean 是同一个bean(占有相同的内存空间)。因此,用户在某个页面更改了这个session bean的属性值,其他页面的这个session bean 的属性值也将发生同样的变化。当用户的会话(session)消失,Tomcat 服务器取消所分配的session bean,即释放 session bean所占有的内存空间。需要注意的是,不同用户(浏览器)的session bean是互不相同的(占有不同的内存空间)。也就是说,当两个用户同时访问同一个Web服务目录,一个用户对自己session bean属性的改变,不会影响到另一个用户(一个用户在不同Web服务目录的session bean 互不相同)。
(3) request bean。 scope 取值为 request 的bean 称为request bean,request bean 的有效范围是用户请求的当前页面,存活时间是从用户的请求产生到请求结束。 Tomcat 服务器分配给每个JSP页面的 request bean是互不相同的。 Tomcat服务器对请求作出响应之后,取消分配给这个JSP页面的 request bean。 简单地说,request bean 只在当前页面有效,直到响应结束。request bean 存活时间略长于page bean的存活时间,原因是Tomcat服务器认为页面执行完毕后,响应才算结束。需要注意的是,不同用户的request bean的也是互不相同的。也就是说,当两个用户同时请求同一个JSP页面时,一个用户对自己request bean 属性的改变不会影响到另一个用户。
(4) application bean。 scope 取值为application 的 bean 称为application bean ,application bean 的有效范围是当前Web服务目录下的各个页面,存活时间直到 Tomcat 服务器关闭。Tomcat 服务器为访问 Web服务目录的所有用户分配一个共享的bean,即不同用户的application bean 也都是相同的一个,也就是说,任何一个用户对自己 application bean属性的改变,都会影响到其他用户(不同Web服务目录的application bean 互不相同)。