Cookie
一.是什么
Cookie 是服务端在 HTTP 响应中附带传给浏览器的⼀个⼩⽂本⽂件,⼀旦浏览器保存了某个 Cookie,在之后的请求和响应过程中,会将此 Cookie 来回传递,这样就可以通过 Cookie 这个载体完成客户端和服务端的数据交互。
二.怎样用
创建 Cookie
Cookie cookie = new Cookie("name","tom"); response.addCookie(cookie);
读取Cookie
Cookie[] cookies = request.getCookies(); for (Cookie cookie:cookies){ out.write(cookie.getName()+":"+cookie.getValue()+"<br/>"); }
类比:cookie就像个绣球,被客户端传去服务器,然后又通过服务器响应(resp)回来
Cookie 常⽤的⽅法
void setMaxAge(int age) 设置 Cookie 的有效时间,单位为秒
int getMaxAge() 获取 Cookie 的有效时间
String getName() 获取 Cookie 的 name
String getValue() 获取 Cookie 的 value
查看默认时间
Cookie []cookies=request.getCookies();
out.write(cookies[0].getMaxAge());
四.cookie与session区别
保存位置 | 保存数据 | 生命周期 | 保存信息 | |
session | 服务器 | object | 服务端:只要 WEB 应⽤重启就销毁,客户端:只要浏览器关闭就销毁
|
重要 |
cookie | 浏览器 | String | 不随服务端的重启⽽销毁,客户端:默认是只要关闭浏览器就销毁,我们通过 setMaxAge()
⽅法设置有效期,⼀旦设置了有效期,则不随浏览器的关闭⽽销毁,⽽是由设置的时间来决定
|
不重要 |
session会随着服务器关闭,存储的数据消失
而cookie跟服务器无关,只跟浏览器有关
设置cookie里的信息可以保存7天
cookie.setMaxAge(60*60*24*7);
session的存取
session.setAttribute("username",username);
session.getAttribute("username")
session的退出登录:session.invalidate()
cookie的存
Cookie cookie=new Cookie("username",username); resp.addCookie(cookie);
cookie的取
Cookie[] cookies=request.getCookies(); for(Cookie cookie:cookies){ if(cookie.getName().equals("username")){ out.write(cookie.getValue()); } }
Cookie的退出登录:cookie.setMaxAge(0)