JAVAWEB学习(6) — Cookie

Cookie

1. 状态管理

1.1 什么是状态管理

将浏览器与web服务器之间多次交互当做一个整体来处理,并且将多次交互所涉及的数据(即状态)保存下来。

1.2 如何进行状态管理

  1. 将状态保存在浏览器端(Cookie)
  2. 将状态保存在服务器端(Session)

2. 什么是Cookie

服务器临时存放在浏览器端的少量数据,用于跟踪用户的状态。

3. 工作原理

当浏览器访问服务器时,服务器会将少量数据以set-cookie消息头的方式发送给浏览器,浏览器会将这些数据临时保存下来。当浏览器再次访问服务器时,会将这些数据以cookie消息头的方式发送给服务器。

4. 添加Cookie

//Cookie只能存放字符串
Cookie c = new Cookie(String name,String value);
response.addCookie(c);

5. 读取Cookie

//读取Cookie
Cookie[] request.getCookies();
//获得Cookie的名字
String cookie.getName();
//获得Cookie的值
String cookie.getValue();

6. Cookie的生存时间

默认情况下,浏览器会将Cookie保存在内存里面。浏览器关闭,则cookie会被删除。

cookie.setMaxAge();

单位是秒

当seconds > 0 时,浏览器会将cookie保存在硬盘上,当超过指定时间,cookie会被删除

当seconds < 0 时,浏览器会将cookie保存在内存里面

当seconds = 0 时,浏览器会立即删除该cookie

  • 删除cookie

    Cookie c = new Cookie("username", "");
    c.setMaxAge(0);
    response.addCookie(c);
    

7. Cookie的编码问题

  • 什么是cookie的编码问题

    cookie只能存放合法的ascii字符,中文需要转换成合法的ascii字符的形式才能存放

    String URLEncoder.encode(String str, String charset);
    String URLDecoder.decode(String str, String charset);
    
  • 建议:不管是否为中文,最好统一编码处理

    //添加Cookie
    Cookie cookie = new Cookie("name", URLEncoder.encode("用户", "UTF-8"));
    response.addCookie(cookie);
    //读取Cookie
    String name = URLDecoder.decod(cookies[i].getValue, "UTF-8");
    

8. Cookie的路径问题

  • 什么是cookie的路径问题

    浏览器访问服务器时,会比较请求地址是否与cookie的路径匹配,只有匹配的cookie才会被发送

  • cookie的默认路径

    cookie的默认路径为添加该cookie的web组件的路径

  • cookie的匹配规则

    1. 请求路径必须等于cookie的路径或者是其子路径,只有满足该条件的cookie才会被发送

    2. 可以修改cookie的路径

      cookie.setPath(String path);
      

9. Cookie的限制

  1. cookie可以被用户禁止

  2. cookie不安全

    对于敏感数据,尽量避免存放在cookie里面,如果一定要存放,要加密之后再存放

  3. cookie只能存放少量的数据,大约是4k左右

  4. cookie的个数有限制

  5. cookie只能存放字符串

猜你喜欢

转载自blog.csdn.net/yisany_Q/article/details/83301766
今日推荐