【web基础】状态管理——cookie

1.什么是状态管理

  • 将浏览器与服务器多次交互的过程看作一个整体,把这多次交互过程当中所涉及到的数据保存下来就是状态管理。
  • 状态:数据
  • 管理:保存

2.cookie

  • 什么是cookie
           浏览器在向服务器发送请求时,服务器会将少量的数据以set-cookie消息头的方法发送给浏览器,浏览器会将数据保存下来,当再次向服务器发送请求时,会将这些数据以cookie消息头的方式发送给服务器,通过这种方式,可以管理用户的状态。
  • 通常有三个步骤来识别回头客:
    • 服务器脚本发送一系列cookies至浏览器。比如名字,年龄,ID号码等等。
    • 浏览器在本地机中存储这些信息,以备不时之需。
    • 当下一次浏览器发送任何请求至服务器时,它会同时将这些cookies信息发送给服务器,然后服务器使用这些信息来识别用户或者干些其它事情
  • 创建cookie(即让服务器发送set-cookie消息头给浏览器)
//name:cookie的名称,value:cookie的值。
Cookie c = new Cookie("username","Harry Potter");
response.addCookie(c);
  • 查看cookie
//如果没有任何的cookie,返回null。
Cookie[] request.getCookies();
//返回cookie的名称
String cookie.getName();
//返回cookie的值
String cookie.getValue();
  • 编码问题
    • cookie的值只能是ascii字符,如果是中文,需要将中文转化成ascii字符形式。
//编码
String URLEncoder.encode(String str,String code);
//解码
String URLDecoder.decode(String str,String code);
  • 生存时间问题
    • 缺省情况下,浏览器会把cookie保存在内存里面,只要浏览器不关闭,cookie就会一直存在,浏览器关闭,cookie就会被销毁。
    • cookie.setMaxAge(int seconds);单位是秒
      • seconds > 0 浏览器会将cookie保存在硬盘上,如果超过了指定的时间,则cookie会被删除
      • seconds < 0 缺省值(cookie保存在内存中)
      • seconds = 0 删除cookie(注意,删除就是用这个)
  • 路径问题
    • 什么是cookie的路径问题
      浏览器在向服务器上的某个地址发请求时,会比较该地址是否符合cookie的路径的要求,只有符合条件的cookie才会被发送出去
    • cookie的默认的路径
      等于添加该cookie的组件(servlet/jsp)的路径
      例如,/web07/biz01/addCookie.jsp 添加了一个名称为”cart”的cookie,则该cookie有一个默认的路径(“/web07/biz01/”)
    • 匹配规则
      请求地址必须等于cookie的路径,或者是其子路径。
      cookie的路径是 /web07/biz01/
      • /web07/biz01/findCookie2.jsp Yes
      • /web07/biz01/sub/findCookie3.jsp Yes
      • /web07/findCookie1.jsp No
    • 修改默认路径
      cookie.setPath(String path)
  • cookie的限制
    • cookie可以被用户禁止。
    • cookie不安全(对于敏感数据,需要加密)。
    • cookie只能保存少量的数据(大约是4k)。
    • cookie的数量也有限制(大约是几百个)。
    • cookie只能保存字符串
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值