web中有三个域对象,另外JSP中还有一个PageContext域对象
四个域对象范围从小到大依次为
PageContext
Request
Session
ServletContext
四个域对象的区别:
主要体现在域范围上,通过setAttribute()方法,四个域对象均可存储数据,传输数据,但是范围不一样
PageContext的作用范围最小,只能在当前页面传输数据,即使是转发,重定向后,PageContext中存储的数据也会失效
Request的作用范围为一次请求,如果请求没有断,Request中的数据就会一直存在,如果经历了转发Request依旧存在,因为转发自始至终为一次请求
Session的作用范围为一次会话,只要当前浏览器窗口一打开且没有关闭,Session中的数据就会存在,但是Session中默认的存在时间为30分钟,如果打开了浏览器,且30分钟之内没有访问此Session,此Session就回销毁.注:(Session是通过Cookie中存储的JSESSIONID值传递的,如果浏览器关闭了Cookie功能,则Session失效)
ServletContext的作用范围为此WEB应用,从此WEB应用部署开始到此WEB应用销毁结束退出运行,ServletContext中的数据会一直存在