Cookie的生命周期:
创建:客户端第一次发送请求给服务器资源
销毁:默认是客户端与服务器断开连接
简单的说,打开浏览器,访问服务器,直到浏览器关闭,称为一次会话
可以通过setMaxAge(int seconds)设置cookie的存在:
正数:将cookie数据写到硬盘文件中。并指定cookie存活时间,时间到后,cookie文件自动失效(从存入cookie开始算)
负数:默认值(客户端与服务器断开连接)
零:存入后就删除cookie数据
Cookie携带路径:默认为当前文件的目录 即:当前Servlet的虚拟路径的上一级
Cookie是请求自动携带的;
创建Cookie对象
Cookie cookie = new Cookie("name","zhangsan");//创建Cookie对象
cookie.setMaxAge(60*60*24);//保存一天,一天后自动删除 ,常用于登录
//cookie.setPath("/");当前服务器内的所有资源
//cookie.setPath(req.getContextPath());当前web应用下的所有资源
cookie.setPath("/aa/bb");//"/aa/bb"目录下的资源能访问到cookie
response.addCookie(cookie);//发送到客户端 实际上就是response.setHeader("Set-Cookie","name=zhangsan");
Cookie[] cookies = request.getCookies();//没有得到任何Cookie cookies就是null getHeader("Cookie")
if(cookies != null){
for(Cookie c: cookies){
System.out.println(cookie.getName+"--"+cookie.getValue);//Cookie和Map一样
}
}
Cookie的实现原理:基于响应头set-cookie和请求头cookie实现
Set-Cookie:“name=zhangsan”
Cookie:“name=zhangsan”
Cookie的细节:
1.一次可以发送和接收多个cookie
2.cookie默认情况下是当浏览器关闭后,Cookie数据销毁
但可以持久化存储 setMaxAge(int seconds)
正数:将Cookie数据写到硬盘的文件中去,并指定cookie存活时间,时间到后,
cookie文件自动失效
负数,表示此cookie只是存储在浏览器内存里,只要关闭浏览器,此cookie就会消失。maxAge默认值
为-1
零:删除cookie信息 即即时失效实现删除Cookie的效果