最近复习到了Cookie和Session,这里系统的讲解一下Cookie和Session。在学习这个之前,我们需要了解,会话的定义。
会话是指某一个人打开浏览器,访问多个页面,然后关闭浏览器的这个过程。比如说小明打开了谷歌浏览器,他想看会B站,接着去玩了4399小游戏,最后关掉浏览器。而我们的Cookie和Session就是在会话中共享数据的。
我们可以回想一下,当我们打开浏览器,想要去淘宝逛逛双十一有什么优惠,但是忘记登陆账号了,选了几件衣服,加入购物车,这个时候电脑突然关机了,当我们再次开机时,购物车里的东西还在吗?当然是在的,这里就用到了Cookie。
Cookie译为小点心,它是一个客户端会话技术,是由服务器端创建,放在响应头发送到客户端保存,用于存储少量数据,因为存放在客户端中,容易被人编造伪造,不是很安全。一般不用于存储重要信息。它是通过键值对传递信息的。
-
-
1.1 创建并添加一个Cookie
- 首先需要创建一个Cookie的对象cookie,因为它是通过键值对传递信息,所以在Cookie的构造方法中需要传入键和值。创建以后需要将新建的cookie对象放入响应中,随着响应传入客户端存储。
-
-
//创建一个Cookie对象 Cookie cookie = new Cookie("text","zhangsi"); //Cookie的有效时间:默认情况下,随着浏览器的关闭而消失 //通过响应添加 resp.addCookie(cookie);1.2 获取Cookie
-
-
****Cookie的获取需要通过请求获取,并且会返回一个Cookie的数组,代码如下:
//通过请求获取Cookie Cookie[] cookies = req.getCookies(); for(int i = 0; i<cookies.lengthif(cookies[i].getName().equals("text")){ System.out.println(cookies[i].getValue()); }因为获取的是Cookie数组,所以需要通过遍历将值全部输出。
-
1.3 删除Cookie
-
****正是因为Cookie是通过键值对传递的,所以键是具有唯一性,可以通过设置键名相同的Cookie有效时间为0,将其删除,代码如下:
-
//建立同名的Cookie Cookie cookie = new Cookie("text","1346"); //删除指定的cookie cookie.setMaxAge(0); resp.addCookie(cookie);1.4 Cookie的有效期
- 总结一下,Cookie是保存在客户端的数据,所以如果不做设定,默认情况下是跟着客户端一起消失的,如果设置了setMaxAge(),将会以设置的数值为主,时间到了将会自动消失。
- 1.5 课后思考
- 1.5.1. Cookie的存活时间是多少?
- 1.5.2. Cookie如何实现共享数据?
- 1.5.3.一个网站cookie是否存在上限?
- 答案将再下节Session公布
-
-