Cookie学习

Cookie

>其实是一份小数据,是服务器给客户端,并且存储在客户端上的一份小数据

应用场景

>自动登陆、浏览记录、购物车

为什么要有这个Cookie

>http的请求是无状态的。客户端与服务器在通讯的时候,是无状态的,其实就是客户端在第二次来访的时候,服务器根本就不知道这个客户端以前有没有来访问过。为了更好的用户体验,更好的互交[自动登陆],其实从公司层面讲,就是为了更好的搜集用户习惯[大数据]

Cookie怎么用?

简单使用:

//1. 在响应的时候,添加cookie
Cookie cookie = new Cookie("name", "zhangsan");
			
//给响应,添加一个cookie
response.addCookie(cookie);

Cookie cookie1 = new Cookie("age","18");
response.addCookie(cookie1);

在客户端收到的信息里面,响应头中多了一个字段Set-Cookie

Set-Cookie : name=zhangsan
Set-Cookie : age=18

// 获取客户端带过来的Cookie
Cookie[] cookies = request.getCookies();

if (cookies != null) {
	for (Cookie cookie2 : cookies) {
		String name = cookie2.getName();
		String value = cookie2.getValue();
		System.out.println(name + "=" + value);
	}
}

客户端提交数据的时候,cookie也是在请求头里面

 Cookie : name=zhangsan;age=18 

常用方法:

/*这个cookie的有效期,默认情况下
关闭浏览器后,cookie就没有了----->针对没有设置cookie的有效期
expiry:有效以秒计算
正值:表示在这个数字过后,cookie将会失效
负值:关闭浏览器后,那么cookie就是小,默认值是-1*/
cookie.setMaxAge(60*60*24*7);
		
//赋值新的值
cookie.setValue(newValue);
		
//用于指定只有请求了指定的域名,才会带上该cookie
//例如:music.baidu.com     sport.baidu.com  ...
cookie.setDomain(".baidu.com");
		
//只有访问上面这个域名下的这个aa路径地址才会带上cookie,这个路径其实就是一个项目
//例如:https://www.baidu.com/aa
//https://localhost:8080/aa
cookie.setPath("/aa");

移除Cookie

官方没有提供delete方法,也没有什么remove方法

方法一:得到以前的Cookie,然后重新设置有效期

Cookie [] cookies = request.getCookies();
Cookie cookie = CookieUtil.findCookie(cookies , "aa");
cookie.setMaxAge(0);
reponse.addCookie(cookie);

方法二:创建一个新的Cookie,

Cookie cookie = new Cookie("name","xx");//注意,此处的key一定要以要移除Cookie的key相同
cookie.setMaxAge(0);
reponse.addCookie(cookie);

Cookie分类:

>会话Cookie:默认情况下,关闭了浏览器,Cookie就会消失

>持久Cookie:在一定时间下,都有效,并且会保存在客户端上

        cookie.setMaxAge(0); //设置立即删除

        cookie.setMaxAge(100); //100 秒

>Cookie的安全问题:

由于Cookie会保存在客户端上,所以有安全隐患问题。Cookie是服务器返回一小份数据给客户端,并且存放在客户端上。

为了解决这个问题---------->Session

>Cookie创建:

response.addCookie(new Cookie())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值