在Web应用中,如果某种数据需要被多个Web组件共享,可以把这些共享数据放在特定的范围内。
(1)、page --- 共享数据的有效果范围,是用户请求访问的当前JSP页面。
(2)、request --- 共享数据的有效果范围,是用户请求访问的当前JSP组件、以及和当前web组件共享同一个用户请求的其他web组件(%@include %指令和<forward>标记)。
(3)、sessin --- 共享数据的有效果范围,是整个Htpp会话的生命周期内,同一个Http会话中的web组件共享它。
(4)、application --- 共享数据在于整个web应用的生命周期内,web应用中的所有web组件都能共享。
当客户第一次访问web应用(支持会话)时,就会开始一个新的Http会话,servlet容器为这个会话创建一个Httpsession对象,当客户浏览这些web应用的不同网页时,始终于处于同一个会话中,会话拥有特定的生命周期。
以下情况中,会话结束生命周期:
<1>、客户端关闭浏览器。
<2>、会话过期。
<3>、服务端调用HttpSession的invalidate()方法。
把共享数据保存在Session范围内,会消耗大量的内.
解决session的问题:
<1>、对session进行持久化管理,Tomcat就提供了管理session的功能。
<2>、如果request范围能完成和存放session范围内同样的功能,则优先考虑用request,因为request释放资源比较快。