在servlet中,域对象一共有3个,分别是上下文域 application、会话域 session、请求域 request,以上3个域对象都是在web开发中,用来做存取值操作的,当我们在域对象中存值之后,在域对象销毁之前,都可以从域对象中将我们存的值给取出来。
存值: setAttribute(String key,Object value)
取值:getAttribute(String key) Object
移除值:removeAttribute(String key)
域对象从创建到销毁的全过程
● application
创建:服务器启动的时候,服务器会自动的为我们创建一个上下文对象
销毁:服务器关闭
● session
创建:执行request.getSession(),如果当前浏览器和服务器之间没有一个有效的会话,以上代码会为我们创建出来一个session对象
销毁:
关闭服务器
1、执行代码session.invalidate()
2、session.setMaxInactiveInterval(10)
超过session的空闲失效时间,session对象自动销毁
3、如果上述代码没有设置
默认30分钟session对象自动销毁
conf/web.xml 5xx 30
4、关闭浏览器,session对象不销毁的,但是存储在浏览器上的JSESSIONID销毁了
关闭浏览器后,此时是这样一种情况,服务器中的session对象还在,浏览器上的JSESSIONID销毁了
当浏览器访问服务器执行request.getSession的时候,由于JSESSIONID销毁,就已经失去了有效的会话,以上代码会为我们创建出来一个新的会话.老会话会随着空闲失效时间的到来自动销毁
● request
创建:当请求访问到项目,那么服务器会为我们的项目创建出来一个request对象
销毁:当servlet将请求处理完毕,准备响应的时候,request对象自动销毁
从图上看,我们的每一次请求和响应,都是request对象创建以及销毁全过程
从以上生命周期分析我们域对象的取值范围:上下文域 > session域 > request域
不切换浏览器的情况下,分析以上案例结果,request域不能够取值,其他域能够取值