Java Web三大作用域对象
这三个对象的作用域和生命周期——从上往下依次递增: 上面最小,下面最大。
1、HttpServletRequest——请求对象
HttpServletRequest是生命周期最短的一个对象。
当一个请求送往tomcat时,这个请求就被创建了。当servlet处理完后,产生了响应并且返回给浏览器,则当前请求对象就会被销毁。
可以说request对象是一个瞬时对象,用完就抛弃。
2、HttpSession——用户会话对象
Session对象叫做用户会话对象,用于保存与浏览器窗口所对应的数据。
Session对象是用户第一次发来请求时被创建的,默认情况下如果Session有30分钟没有被访问,那么这个Session对象就会被销毁。
相对来说更加持久的就是HttpSession对象,保存与浏览器所对应的数据、生命周期比request大一些。
误解区:当我们直接关闭浏览器窗口时,Session对象依然存在,只是把浏览器中的Sessionid的cookie给抛弃了。其数据还在tomcat里,默认保留30分钟。
3、ServletContext——Web应用程序全局对象
ServletContext对象解释:Servlet上下文对象,是web应用程序的全局对象。
一个Web应用程序只会创建一个ServletContext对象。
ServletContext随着Web应用程序启动而自动创建、在web应用程序重启或者关闭时会被销毁。
可以说Java Web应用程序的三大作用域对象会伴随着我们的开发从始至终。
另外有些开发建议:
因为作用域是从小到大依次递增的,为了程序维护的需要和资源避免浪费的情况、能用小作用域完成的功能就不要使用大的作用域、以后的开发中request将会是我们打交道最多的对象,至于Session和Context使用相对较少。