概念
在了解Servlet中的context,session和request这三个对象作用的前提,必须知道它们是什么。
Context:
ServletContext当成一个公用的空间,可以被所有的客户访问,WEB容器在启动时,它会为每个Web应用程序都创建一个对应的ServletContext,它代表当前Web应用,并且它被所有客户端共享。
Session:
Servlet 中的 HttpSession 接口,该接口提供了一种跨多个页面请求或访问网站时识别用户以及存储有关用户信息的方式。Servlet 容器使用这个接口来创建一个 HTTP 客户端和 HTTP 服务器之间的 session 会话。会话持续一个指定的时间段,跨多个连接或页面请求。
Request:
当浏览器请求网页时,它会向 Web 服务器发送特定信息,这些信息不能被直接读取,因为这些信息是作为 HTTP 请求的头的一部分进行传输的。我们可以通过请求的方法将我们想要的数据转发给其它资源或者服务器。
三者的常用方法
Context:
setAttribute(String name, Object obj); 添加属性或者对象到容器中
getAttribute(String name),这个方法返回Object 获取容器中的对象
removeAttribute(String name) 删除属性
Session:
request.getSession()返回对象是session 获取一个session
setAttribute(String name, Object value) 使用指定的名称绑定一个对象到该 session 会话
getAttribute(String name) 获取session 会话中具有指定名称的对象
String getId() 获取session 会话的唯一标识符的字符串
removeAttribute(String name) session 会话移除指定名称的对象
invalidate() session 会话无效,里面的数据对象也会失效
Request:
getAttribute(String name) 获取request中的数据,尤指转发过来的request
setCharacterEncoding(String env) 设置字符集,因为浏览器需要知道你的字符集去解析
getParameter(String name) 获取发送过来的表单中的数据
setAttribute(String name, Object o) 在request中添加一条属性或者对象
removeAttribute(String name) 移除request中的数据或者对象
三者的作用域
Request:
它的作用域:仅在当前请求中有效。常用于服务器间同一请求不同页面之间的参数传递,常应用于表单的控件值传递。
Session:
服务器会为每个会话创建一个session对象,所以session中的数据可供当前会话中所有servlet共享。用户打开浏览器会话开始,直到关闭浏览器会话才会结束。一次会话期间只会创建一个session对象。常用于web开发中的登陆验证界面。
注:服务器会将空闲时间过长的session对象删除掉,这是为了节省内存空间。大部分服务器默认的超时时间长度为30分钟。如果想改变这个时间,可以去在配置文件中更改。或者用这个方法:
session.setMaxInactiveInterval(int seconds); 设置两次请求之间最大的时间间隔 这个时间的参数是秒
ServletContext(Application):
范围:所有的用户都可以取得此信息,此信息在整个服务器上被保留。Application属性范围值,只要设置一次,则所有的网页窗口都可以取得数据。ServletContext在服务器启动时创建,在服务器关闭时销毁,一个JavaWeb应用只创建一个ServletContext对象,所有的客户端在访问服务器时都共享同一个ServletContext对象;ServletContext对象一般用于在多个客户端间共享数据时使用。