一.servlet context
作用范围:所有的用户都可以取得此信息,此信息在整个服务器上被保留。Application属性范围值,只要设置一次,则所有的网页窗口都可以取得数据。ServletContext在服务器启动时创建,在服务器关闭时销毁,一个JavaWeb应用只创建一个ServletContext对象,所有的客户端在访问服务器时都共享同一个ServletContext对象;ServletContext对象一般用于在多个客户端间共享数据时使用;
方法:
*String getInitParameter (String name)
获取名为name的系统范围的初始化参数值,系统范围的初 始化参数可在部署描述符中使用<context-param>元素定义
*void setAttribute (String name, Object object )
设置名称为name的属性
*Object getAttribute (String name)
获取名称为name的属性
*String getRealPath (String path)
返回参数所代表目录的真实路径
*void log ( String message)
记录一般日志信息
二.session
服务器会为每个会话创建一个session对象,所以session中的数据可供当前会话中所有servlet共享。会话:用户打开浏览器会话开始,直到关闭浏览器会话才会结束。一次会话期间只会创建一个对象。
方法:
三.request
request是表示一个请求,只要发出一个请求就会创建一个request,它的作用域:仅在当前请求中有效。常用于服务器间同一请求不同页面之间的参数传递,常应用于表单的控件值传递
除了继承ServletRequest接口中的方法,还增加了一些用于读取 HTTP请求信息的方法
总结:
作用域:servlet context、 session、request
- 使用作用域传递数据和存储数据
- 使用作用域传递数据时,必须掌握作用域对应的生命周期和作用范围
生命周期:
request:只限于一次请求
session:一次会话(多次请求)
servlet context:直到服务器关闭
作用范围:
requset:所有被请求转发的Servlet
session:所有的Servlet
servlet context:所有的Servlet(换一个浏览器演示,跟session作用域)
如何正确的选择作用域
request:跟当前操作功能相关
session: 跟用户信息相关
application:跟项目全局信息相关