Cookie原理
http
是无状态的传输协议,也就是说每一次和服务器交互都不会知道上一次交互做过什么,但是如果需要知道上次做过什么,保存过什么信息那么就需要使用cookie
- 原理图
- 代码
@WebServlet("/cookie1")
// CookieDemo1
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Cookie c = new Cookie("msg", "hello-Cookie");
response.addCookie(c);
}
@WebServlet("/cookie2")
// CookieDemo2
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie c : cookies) {
String key = c.getName();
String value = c.getValue();
System.out.println(key + " : " + value);
}
}
}
-
客户端访问
/cookie1
时服务端CookieDemo1
会返回一个cookie
也就是响应头
里面添加有Set-Cookie: msg=hello-Cookie
的字段,然后浏览的默认行为会将该字段保存在Applcation里的Cookie
信息里面存储
-
当访问
/cookie2
时浏览器会将所有的cookie
作为请求头
发送给服务端,这个时候CookieDemo2
进行解析获取出每一个cookie
从而知道上次浏览器http
请求保存了什么数据(只要有cookie访问任何页面都会在请求头传入
)