**
cookie
**
cookie
cookie
cookie是客户端浏览器帮助服务端tomcat保存信息的一种机制。这些被保存的信息可以在以后的请求与响应中实现在客户端浏览器与服务端tomcat之间来回传递。
例子:
用户登录后,显示用户上次登录的时间。
//1.服务端向客户端写cookie
String date=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
Cookie cookie=new Cookie("date",date);
response.addCookie(cookie);
//客户从浏览器中读取
Cookie[] cookies=request.getCookies();
if(cookies!=null && cookies.length>0){
for(int i=0;i<cookies.length;i++){
if("date".equals(cookies[i].getName())){
String cookievalue = cookies[i].getValue();
}
}
}
cookie的保存问题
-
临时保存
cookie是保存到浏览器中的String类型的数据,默认保存到浏览器内存中。
当浏览器关闭后,cookie就失效了,这种cookie称作临时Cookie。
-
永久保存
cookie对象调用了setMaxAge可以设置cookie在浏览器中的存活的时间。单位是秒。
永久的cookie是存储在客户端硬盘上的。
Cookie存储数据的类型
cookie只能存储String类型的数据
哪些网址能够取到Cookie
- 哪个网址写入了cookie,就只能由哪个网址读回cookie。
- 也可以设置cookie的域。
cookie.setDomain("http://www.baidu.com")
cookie的路径
当一个项目中有两个数据都要用cookie存储时,这两个cookie的名称就要写不同,除非他们是在不同的项目中的。
如果有相同名称的cookie需要将cookie设置在不同的目录中。通过调用setPath()方法可以设置cookie的路径。
Cookie cookie1=new Cookie("data",老师);
cookie1.setPath("/mvc/teacher");
Cookie cookie2=new Cookie("date",学生);
cookie2.setPath("/mvc/student");
cookie存储汉字
如果cookie中如果存储了汉字,默认就会发生java.lang.IllegalArgumentException异常。
-
解决的办法 在储存之前将汉字编码,在读取之后再讲汉字进行解码。
编码:URLEncoder.encode()
解码:URLDecoder.decode()
cookie的失效
将cookie的最大存活时间设置成0,
cookie.setMaxAge(0)
cookie的安全性
cookie是不安全的,因为他保存在客户端。可以被看见之后修改。所以敏感的数据都不能保存到cookie中。
cookie的使用场景
- 记住上次的登录时间。
- 记住用户上次登录的用户名。
- 猜你喜欢