你要知道
Cookie是一段保存在客户端的小文本,能够将信息保存在客户端,服务器可以获得该信息,可以跟踪用户状态
Cookie有以下特征
- 文本:服务器给浏览器发送的一端键值对
- 用途:常用于用户名、密码的保存,记录浏览过的商品
- 英文:直接存储中文会报错,需要额外的编码解码。但是,cookie操作一般不会用到中文,因此,无视之
- 数量:可以有多个,但浏览器一般只允许300个Cookie,每个站点最多20个,每个Cookie的上限为4KB
Cookie原理
- 浏览器用laobai用户登录狗东
- 狗东的服务器会生成一个ID
- 狗东的服务器把这个ID传给浏览器
- 浏览器收到这个ID后会吧这个ID保存在本地
- 用户再次访问狗东时,浏览器会将这个ID发送给狗东的服务器
- 狗东收到这个ID后会知道这是一个登录过的用户,直接登录而不需要再次输入密码
以上交互过程的,保存在客户端的ID就是Cookie
操作套路
创建Cookie
- 新建 new Cookie(键值对)
- 时间 设置失效时间 setMaxAge(int time) 如果time为0,则立即失效 如果time为负数,则关闭浏览器是失效
- 路径 设置路径 setPath(String path) 把该cookie设置某路径下,浏览器访问此路径的时候,才会携带cookie数据给服务器
- 添加 addCookie
Cookie coName = new Cookie("uname", rName); //创建Cookie对象
coName.setMaxAge(60 * 60 * 24 * 7); // 最大保存时间
coName.setPath("/"); // 保存路径
response.addCookie(coName); //添加Cookie
这里推荐一个小工具 Firefox 的一个小插件 Cookie Manage 很方便的查看Cookie
获取Cookie
Cookie[] cookies = request.getCookies();
if(cookies != null) {
for (Cookie cookie : cookies) {
System.out.println(cookie.getName()+" : "+cookie.getValue());
}
}else {
System.out.println("没有cookie");
}
控制台打印Cookie
总结
新建Cookkie的时候一个一个的新建,获取的时候一起获取
练习 七天自动登录
模拟一个用户登录 ,第一次登录需要输入用户名和密码,登陆后进入欢迎页面。而后,七天内登录不需要输入用户名密码,直接进入欢迎页面。
附加功能:注销功能,注销后回到主页,再次登录需要输入密码
参考思路和代码:https://blog.csdn.net/qq_34181343/article/details/89931881