java web Cookie浅谈

1.会话控制
> Http协议
Http协议两个缺陷:
1.HTTP协议是纯文本的
2.HTTP协议是无状态的
服务器不能简单的通过HTTP协议来区分多次请求是否发自同一个用户
虽然通过HTTP协议不能区分不同请求是否来同一用户,但是我们实际生活却有这样的需求。

[1] Cookie
> 看电影
- 去电影院看电影时,检票人员是认票不认人。
- 电影院的运作流程
1.印刷电影票
2.将票发给看电影
3.看电影的拿着票来看电影
4.检票

> 简介
- 我们想可以通过服务器向浏览器发送一个类似票的东西,
浏览器在访问服务器时就可以拿着票来访问
服务器就可以根据这个票来识别不同的用户。

- 服务器发送给浏览器的这张票我们称为Cookie。
- Cookie的使用流程:
1.服务器先要创建Cookie
2.将Cookie发送给浏览器
3.浏览器带着Cookie访问服务器
4.服务器检查浏览器的Cookie

- Cookie实际上就是一个头
服务器通过响应头将Cookie发送给浏览器,
浏览器通过请求头将Cookie发回给服务器,
服务器可以根据不同的Cookie来识别不同的用户。

> 使用Cookie
- 创建Cookie
Cookie cookie = new Cookie(name,value);

- 发送Cookie
response.addCookie(cookie);
注意:可以发送多个cookie!

- 读取Cookie
request.getCookies(); 返回的是一个Cookie数组。
- 虽然Cookie是一个键值对结构,但是它并没有给咱们提供一个根据键获取值的方法。
我们要想读取Cookie的信息,只能通过遍历数组。

- 修改Cookie
一旦Cookie发给浏览器以后,服务器便不能直接修改Cookie,
但是可以通过使用同名Cookie来替换的老Cookie方式来间接的修改

> Cookie的有效时间
- Cookie的默认有效时间为一次会话,当关闭浏览器时,Cookie将失效。
- 通过setMaxAge(秒数)来设置Cookie的有效时间
-//当秒数大于0时,有效时间会设置为相应的秒数
cookie.setMaxAge(30);

//当秒数等于0时,代表Cookie立即失效,浏览器不会保存。
cookie.setMaxAge(0);

//当秒数小于0时,和不设置是一样,一次会话中有效
cookie.setMaxAge(-100);

- 设置一个长久有效的Cookie
cookie.setMaxAge(60*60*24*365*10)

- 在程序中使Cookie立即失效
- 可以使用一个同名的,立即失效的Cookie来替换已有Cookie

注意:不建议在cookie中传递中文,会用base64编码!


> Cookie的Path
- path指的Cookie的路径
- 所谓的Cookie路径就是指,浏览器在访问哪些地址时会携带Cookie。
- Cookie默认有效路径是项目的根目录,只要访问当前项目下的资源就会带着Cookie
- 通过setPath()方法来设置Cookie有效路径

//修改Cookie的有效路径
//Cookie的路径由浏览器解析,所以设置路径时需要加上项目名
cookie.setPath(request.getContextPath()+"/hello");

> 应用:
1.可以用来保持用户的登录状态
2.可以用来记录用户上次输入的用户名
3.广告的推送

原文地址:https://www.cnblogs.com/of-fanruice/p/7384363.html