javaWEB中的四种域对象
(1)ServletContext
ServletContext是最大的Web域对象,在整个工程内有效,可以存储一些需要全局部署的配置文件,也可以存储其他信息,不过因为它的生命周期最长,是随着服务器的开
启而开启,随着服务器的关闭而销毁,或者项目从服务器中移除工程而销毁。所以ServletContext中存储数据,会一直储存在内存中,所以少用这个对象会比较节省内存。
(2)Session
session的生命周期,随着getSession方法的调用而创建,默认是30分钟不调用就会销毁这个session对象,服务器非正常关闭也会销毁session,服务器正常关闭只会将
session序列化到磁盘中,在下一次开启的时候会再加载进内存,所以一次会话结束,浏览器结束,并不会销毁session,但是会使得该浏览器失去密钥,从而无法访问这个
session;还有手动调用session.invalidate()会销毁session。session的作用范围是一次会话,也就是从打开浏览器到关闭浏览器。
Session与Cookie的比较:
1)、cookie是存于浏览器端,而session是存于服务器端。
2)、cookie有数量和大小限制,而session没有,可以无限创建。
3)、session因为几乎只有一次的作用,会对服务器产生较多的垃圾,所以还是慎用。
(3)Request
Request的作用范围是一次访问的过程,生命周期随着访问开始而开始,随着服务器的响应完毕而结束,所以
更多的数据会添加到这个域对象。
1)、转发会携带这第一次的ServletRequest的信息,传递到下一个文件,而重定向是重新开启一次访问,不会携带。
2)、转发上面的地址栏不会发生改变就访问了别的内容,重定向会发生改变。
3)、转发只能存在于服务器内部,重定向可以访问任何其他的网页。
4)、因为转发只创建了一次客户端和服务器的链接,所以相对而言转发会比较节省网络资源。
(4)Page域
Page的作用范围为当前页有效,只能用于jsp页面中,是四个域对象中作用范围最小的的一个域对象。