JavaWeb之cookie缓存技术

web应用的会话技术:打开浏览器并访问网站,请求多个资源,关闭浏览器的过程。
在这个过程中,缓存用户数据常用的有两种技术:
1.cookie技术:用于在浏览器端,缓存用户的数据,可以理解为数据缓存在用户本地
2.session技术:用于在服务端,缓存用户的数据,可以理解为数据缓存在服务器。
cookie技术:
1.服务器需要缓存数据,将数据发给浏览器,浏览器对缓存数据进行存储;当浏览器再次访问服务器的时间后,会将缓存信息,一起发给服务器.
2.cookie技术的原理图解:
JavaWeb之cookie缓存技术_第1张图片
根据上图分析如下:
a.首先浏览器先向服务器发送请求,服务端接受请求,并需要浏览器去缓存一些信息。于是创建cookie对象
b.将cookie对象添加到response响应对象中,然后通过http协议发送给浏览器。
c.浏览器接受响应信息,同时浏览器将cookie信息,保存到cookie文件中,同样以名称=值的方式保存
d.当浏览器再次发送请求到服务器的时候,会将cookie信息一同通过http协议发送到服务端。
e.服务端就可以获取之前存储的cookie信息了。
上述abcde进详细的描述了cookie在浏览器和服务器之间传递和保存的过程图。
3.相关类
Javax.servlet.http.cookie
a.服务器能发送少量的数据到浏览器
b. 每一个web服务器只能向用户发送20个cookie
c.一个浏览器可以缓存300个cookie
d.每一个cookie文件最大值为4k
e.cookie名称和内容不支持中文,如果需要使用中文需要编码,获得数据进行解密
* 方案1: (get请求的中文乱码的处理方式一致的)
    * 编码:str.getBytes() 使用,将字节数组拼凑成字符串(1,2,3,4)
    * 再解码: 字符串1,2,3,4变成字节数组,new String
   * 方法2:
    * 编码:URLEncoder
     URLEncoder.encode(cn, "UTF-8");
    * 解码:URLDecoder
     URLDecoder.decode("%E9%BE%99%E5%84%BF", "UTF-8");
4.cookie生命周期 
默认情况:会话级cookie,会话结束后,cookie将被销毁 
修改有效时间:setMaxAge,单位为秒 
>0 ,指定x秒后失效,将以文件形式保存浏览器端(在硬盘中) 
=0 ,浏览器将删除cookie 
<0 ,会话级cookie,在内存中 
浏览器处理cookie依据 
唯一标记格式:domain + path + name 
cookie名称可以重复 
路径设置 
setPath("路径") 
/ web站点根 
 /day10/ web项目根 
例如:http://localhost:8080/day10/a/b/c/Demo01CookieServlet 
默认路径:/day10/a/b/c/ 
getCookies() 获得所有符号要求的cookie 
     浏览器将携带当前访问路径,已经父路径下的所有cookie 
     此处符合要求的路径 
      /day10/a/b/c/ 
      /day10/a/b/ 
      /day10/a/ 
      /day10/ 
      / 
      /day11/ 不能获得day11目录下的cookie 
路径常用设置:setPath("/") 
域名设置domain (了解) 
setDomain("域名") , setDomain(".itheima.com") 
默认域名:localhost 
二级域名例如: 
    www.itheima.com 
    bbs.itheima.com 
    v.itheima.com 
    download.itheima.com 
扩展: 
  cookie只能http协议使用,false表示javascript也可以使用 
  cookie.setHttpOnly(true);
 
cookie缓存技术实现的用户浏览商品记录案例

你可能感兴趣的:(cookie)