Servlet Cookie的使用
无状态主要指 2 点:
协议对于事务处理没有记忆能力,服务器不能自动维护用户的上下文信息,无法保存用户状态;
每次请求都是独立的,不会受到前面请求的影响,也不会影响后面的请求。
当浏览器发送 HTTP 请求到服务器时,服务器会响应客户端的请求,但当同一个浏览器再次发送请求到该服务器时,服务器并不知道它就是刚才那个浏览器,即 HTTP 协议的请求无法保存用户状态。
通常情况下,用户通过浏览器访问 Web 应用时,服务器都需要保存和跟踪用户的状态。例如,用户在某购物网站结算商品时,Web 服务器必须根据请求用户的身份,找到该用户所购买的商品。由于 HTTP 协议是无协议的,无法保存和跟踪用户状态,所以需要其他的方案来解决问此题,它就是会话技术。
会话技术
从打开浏览器访问某个网站,到关闭浏览器的过程,称为一次会话。会话技术是指在会话中,帮助服务器记录用户状态和数据的技术。常用的会话技术分为两种:
Cookie :客户端会话技术
Session :服务端会话技术
本节将对 Cookie 进行介绍,下节将对 Session 进行介绍。
Cookie
Cookie 属于客户端会话技术,它是服务器发送给浏览器的小段文本信息,存储在客户端浏览器的内存中或硬盘上。当浏览器保存了 Cookie 后,每次访问服务器,都会在 HTTP 请求头中将这个 Cookie 回传给服务器。
Cookie 的分类
Cookie分为两种:
会话级别 Cookie(默认):Cookie 保存到浏览器的内存中,浏览器关闭则 Cookie 失效。
持久的 Cookie:Cookie 以文本文件的形式保存到硬盘上。
Cookie 的工作流程
Cookie 是基于 HTTP 协议实现的,工作流程如下。
客户端浏览器访问服务器时,服务器通过在 HTTP 响应中增加 Set-Cookie 字段,将数据信息发送给浏览器。
浏览器将 Cookie 保存在内存中或硬盘上。
再次请求该服务器时,浏览器通过在 HTTP 请求消息中增加 Cookie 请求头字段,将 Cookie 回传给 Web 服务器。服务器根据 Cookie 信息跟踪客户端的状态。
Cookie API
javax.servlet.http 包中定义了一个 Cookie 类,利用它的带参构造方法,可以创建 Cookie 对象。例如:
Cookie c = new Cookie("url", "www.biancheng网站站点" rel="nofollow" />
package net.biancheng.www.cookie;
import java.io.IOException;
import java网站站点" rel="nofollow" />
package net.biancheng.www.cookie;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 删除 Cookie
* @author 编程帮 www.biancheng网站站点" rel="nofollow" />
5. 再次访问 LoginTimeServlet,结果如下图。

6. 点击超链接“清除COOKIE”,结果如下图。
