Cookie的简单介绍:
首先我们知道的是Cookie是浏览器提供的一种技术,**通过服务器的程序将一些职能保留存在在客户端的,或者客户端进行处理的数据,存在放在本地的计算机上,不需要通过网络传输,因而提高网页处理的效率,并且能够减少服务器的负载,**但是由于Cookie是服务器端保留存在的客户端的信息,所以其其安全性也是很差的.
有一个专门操作Cookie的类: javax.servlet.http.Cookie
随着服务器端的响应 发送给客户端,保存在浏览器。当下次再访问服务器时把 Cookie 再带回服务器
Cookie的格式: :
键值对用“=”链接,多个键值对间通过“ ;”隔开
例如: A=a; B=b;
还有就是Coolie存的数据都是比较小的 大约在4KB左右,没有办法存了大量的数据
Cookie的创建和发送:
通过 new Cookie(“key”,”value”);来创建一个 Cookie 对象,要想将 Cookie 随 响应发送到客户端,需要先添加到 response 对象中,resp.addCookie(cookie);此 时该 cookie 对象则随着响应发送至了客户
Cookie的获取:
在服务器端只提供了一个 getCookies()的方法用来获取客户端回传的所有 cookie 组成的一个数组,如果需要获取单个 cookie 则需要通过遍历,getName() 获取 Cookie 的名称,getValue()获取 Cookie 的值
Cookie到期时间的设定以及Cookie的注意事项:
意思是说:我们怎么设置什么时候去关闭Cookie
给他一个我们预先设定好的时间,让Cookie到达我们制定的时间就失效; 所以我们这里就需要设定一个到期时间.
**本身Cookie到期的时间是:默认浏览器关闭就失效
**
除了本身默认的到期时间之外,我们该可以自己手动的去设定Cookie的到期时间:
通过 setMaxAge(int time);方法设定 cookie 的最大有效时间,以秒为单位。
大于 0 的整数,表示存储的秒数;
若为负数,则表示不存储该 cookie;
若为 0,则删 除该 cookie。
负整数:cookie 的 maxAge 属性的默认值就是-1,表示只在浏览器内存中存活,一旦关闭浏览器窗口,那么 cookie 就会消失。
正整数:表示 cookie 对象可存活指定的秒数。当生命大于 0 时,浏览器会把 Cookie 保存到硬盘上,就算关闭浏览器,就算重启客户端电脑,cookie 也会存活相应的时间。
零:cookie 生命等于 0 是一个特殊的值,它表示 cookie 被作废!也就是说,如果原来浏览器已经保存了这个 Cookie,那么可以通过 Cookie 的 setMaxAge(0)来删除这个 Cookie。 无论是在浏览器内存中,还是在客户端硬盘上都会删除这个 Cookie。
注意事项:
Cookie不能跨浏览器/电脑/不能储存中文(报错)
存中文会报错:java.lang.IllegalArgumentException: Control character in cookie value or attribute.
如果有中文则通过 URLEncoder.encode()来进行编码,获取时通过 URLDecoder.decode()来进行解码。
Cookie的覆盖:
如果服务器端发送重复的 Cookie 那么会覆盖原有的 Cookie
Cookie的路径:
在 Servlet 中保存的 Cookie 如果没有设置 path,那么它的 path 默认为当 前 Servlet 的所在路径;
当访问的路径包含了 cookie 的路径时,则该请求将带上该 cookie;如果访 问路径不包含 cookie 路径,则该请求不会携带该 cookie