目录
会话跟踪技术
会话可以简单的理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应。例如,用户在某个浏览器中访问某一个 Web
应用,只要不关闭该浏览器,不管该用户点击该 Web
应用的多少个超链接,访问多少资源,直到关闭浏览器之前,整个的这个访问过程我们称为一次会话
在一个会话的多个请求中共享数据,这就是会话跟踪技术。会话跟踪技术可以解决我们很多问题。比如最常见的就是一个用户在登陆一个网站之后,请求该网站的其他页面和资源时免登录的功能,又比如购物网站中常见的显示曾经浏览过的商品的功能,又比如某些购物网站允许未登录用户可以添加商品到临时购物车中的功能
常见的会话跟踪技术有 Cookie
和 Session
,Cookie
是先出现的
Cookie
概述
由于 HTTP
是一种无状态的协议,但为了实现期望的保持状态功能,于是引入了 Cookie
技术。Cookie
技术通过在请求和响应报文中写入 Cookie
信息来控制客户端的状态
简单的说:Cookie
是由服务器创建,然后通过响应发送给客户端的一个键值对,这个键值对中包含了要该会话想要记住的状态信息,客户端会保存这个 Cookie
,并会标注出 Cookie
的来源(哪个网站的 Cookie
)。当客户端再一次向该网站发出请求时会把所有这个网站的 Cookie
包含在请求报文头中发送给服务器,这样服务器就可以根据该请求携带的 Cookie
信息识别客户端,并且得到之前的状态信息了
第一次,没有 Cookie
信息状态下的请求
第二次开始,存有 Cookie
信息状态的请求
Cookie
的简单使用
在 Java
的 Servlet
规范中,可以非常简单的设置和获取 Cookie
,Cookie
被抽象成为一个 Cookie
类
- 当要设置
Cookie
的时候,需要创建Cookie
对象并且设置key
和value
,随后通过response
响应对象的addCookie()
方法添加这个Cookie
即可,Web
服务器会自动将response
中的Cookie
发送给客户端 - 客户端在随后对该
Web
应用的其他资源进行访问的时候,将会自动带上服务器发送的Cookie
(同一个服务器的其他Web
应用也不会发送)
@WebServlet