目录
Servlet中的三大数据存放对象
- ServletContext :通常用application来表示
- HttpSession:通常用session表示
- HttpServletRequest:通常用request表示
ServletContext
作用范围:
上下文对象,在服务器启动时被创建,关闭时被注销,被所有Servlet共享。所有的用户都可以取得此信息,此信息在整个服务器上被保留。Application属性范围值,只要设置一次,则所有的网页窗口都可以取得数据。ServletContext在服务器启动时创建,在服务器关闭时销毁,一个JavaWeb应用只创建一个ServletContext对象,所有的客户端在访问服务器时都共享同一个ServletContext对象;ServletContext对象一般用于在多个客户端间共享数据时使用,拥有最长的生命周期。
- 创建:服务器启动的时候
- 销毁:服务器关闭的时候或者项目移除的时候
常用方法:
举例子:
备注:服务器只会创建一个ServletContext 对象
HttpSession
作用范围:
会话对象,服务器会为每个会话创建一个session对象,所以session中的数据可供当前会话中所有servlet共享, 拥有较长的生命周期。
会话:用户打开浏览器会话开始,直到关闭浏览器会话才会结束。一次会话期间只会创建一个session对象。
用处:常用于web开发中的登陆验证界面(当用户登录成功后浏览器分配其一个session键值对)。
- 创建:浏览器请求服务器时
- 销毁:关闭浏览器窗口或页面不刷新过期时
常用方法:
session的创建与获取:
使用session传输数据:
备注: session是服务器端对象,保存在服务器端。
HttpServletRequest
作用范围:
请求对象,浏览器每次发送请求时被创建,响应结束之后被销毁,用于存放来自页面的参数和浏览器信息,生命周期最短。
- 创建:客户端向服务器发送一次请求
- 销毁:服务器为这次请求做出相应之后,销毁request
常用方法:
返回请求中指定参数的值: 使用HttpServletRequest请求转发:
综上所述:三个作用域对象操作的API相同
- 存放数据:setAttribute(name, value)
- 获取数据:getAttribute(name)
- 删除数据:removeAttribute(name)
三大数据存放对象的生命周期
- request:只限于一次请求,生命周期最短
- session:一次会话(多次请求),生命周期较长
- application:项目的加载到卸载,生命周期最长
如何正确的选择作用域
- request:跟当前操作功能相关
- session: 跟用户信息相关
- application:跟项目全局信息相关