会话及其会话技术
第五章、会话及其会话技术
5.1 会话概述
会话类似于生活中的打电话过程,指的是一个客户端(浏览器)与Web服务器之间连续发生的一系列请求和响应过程。
- Request
每次HTTP请求,Web服务器都会创建一个HttpServletRequest对象,该对象只能保存本次请求所传递的数据。 - ServletContext 同一个Web应用共享的是一个ServletContext对象,用户发送结账请求无法区分哪个商品是哪个用户所购买的
5.2 Cookie对象
Cookie是一种会话技术,将会话过程中的数据保存到用户的浏览器中,使浏览器和服务器更好地进行数据交互。
服务器向客户端发送Cookie时,会在Http响应头字段中增加Set-Cookie响应头字段
Set-Cookie: user=itcast; Path=/;
user表示Cookie名称,itcast表示Cookie的值,Path表示Cookie属性。Cookie必须以键值对的形式存在,属性可以有多个,属性之间用分号和空格分隔。
用户第一次访问服务器,服务器在响应消息中增加Set-Cookie头字段,将用户信息以Cookie形式发送给浏览器,浏览器接收并缓存。再次访问的时候,请求的消息中以Cookie形式发送给服务器,服务器可分辨用户信息。
API
获取设置属性名称、有效时间(-1默认永久保存)、有效目录路径(所有有效/)、有效域、采用的协议版本、注解、是否使用安全协议等。
5.3 Session对象
Cookie传递的信息多的时候显然会增大服务器端程序处理的难度,可以使用Session技术。Session将会话数据保存到服务器端的技术。
概述
访问网站时,创建一个Session对象,会话信息会存放在此对象中,同时Session的ID以Cookie(Set-Cookie:JSESSIONID=111)形式返回给甲的浏览器。根据Cookie找到Session,根据Session找到用户信息。
API
Session与每个请求消息紧密相关,HttpServletRequest定义获取Session对象的
getSession(boolean create)方法(重载后的,一个可创建新的一个返回NULL)
Session可能是新创建的,发送Cookie字段,要在发送任何响应前。
获取对象id,创建时间,上一次请求关联时间,修改当前会话的默认超时间隔,无效,是否是新创建,当前对象的