博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
状态管理之cookie详解
阅读量:4305 次
发布时间:2019-05-27

本文共 1735 字,大约阅读时间需要 5 分钟。

状态管理之cookie详解

(1)什么是状态管理

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

(2)如何进行状态管理?

    第一大类:客户端状态管理技术:即将状态(也就是多次交互所涉及的数据)保存在客户端(浏览器)。

    第二大类:服务器端状态管理技术:即将状态保存在web服务器端。

(3)cookie

   1)什么是cookie?

      a,是一种客户端的状态管理技术。

      b,服务器临时保存在浏览器端的少量的数据。

   2)工作原理

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

       当浏览器再次访问服务器,会将之前保存的这些数据以cookie消息头的方式发送给服务器。

   3)添加cookie

      //name:cookie的名称,value:cookie的值。

      Cookie c = new Cookie(String name,String value);

      response.addCookie(c);

   4)查询cookie

      //如果没有任何的cookie,返回null。

      Cookie[] request.getCookies();

      //返回cookie的名称

      String cookie.getName();

      //返回cookie的值

      String cookie.getValue();

   5)编码问题

      cookie的值或者名称只允许出现合理的ascii字符串。

      如果是中文,需要将中文转换成ascii字符串,否则报错。

       //编码

       String URLEncoder.encode(String str,String code);

       //解码

       String URLDecoder.decode(String str,String code);

     注:

         添加cookie时,建议最好统一编码处理。

   6)生存时间问题

      缺省情况下,浏览器会把cookie保存在内存里面,只要浏览器不关闭,cookie就会一直存在,浏览器关闭,cookie就会被销毁。

      setMaxAge(int seconds);

     注:          

        a,单位是秒。
        b,seconds > 0 浏览器会将cookie保存在硬盘上,如果超过了指定的时间,则cookie会被删除。

           seconds < 0 缺省值(cookie保存在内存中).

           seconds = 0 删除cookie.

               比如,要删除一个名称为"cart"的cookie,

                    Cookie c = new Cookie("cart","");

                    c.setMaxAge(0);

                    response.addCookie(c);

  7)路径问题

     a.什么是cookie的路径问题

        浏览器在向服务器上的某个地址发请求时,会比较该地址是否符合cookie的路径的要求,只有符合条件的cookie才会被发送出去。

     b.cookie的默认的路径

        等于添加该cookie的组件(servlet/jsp)的路径

        比如,/web07/biz01/addCookie.jsp 添加了一个名称为"cart"的cookie,则该cookie有一个默认的路径("/web07/biz01/")。

     c.匹配规则

        请求地址必须等于cookie的路径,或者是其子路径。

            cookie的路径是 --/web07/biz01/

            /web07/biz01/findCookie2.jsp yes

            /web07/biz01/sub/findCookie3.jsp  yes

            /web07/findCookie1.jsp    no

     d.cookie.setPath(String path)修改默认路径;

        比如

            cookie.setPath("/appname");

       这样,应用内部的某个组件所添加的cookie可以被该应用内部的其他组件访问到。

  8)cookie的限制

     a. cookie可以被用户禁止。

     b. cookie不安全(对于敏感数据,需要加密)。

     c. cookie只能保存少量的数据(大约是4k)。

     d. cookie的数量也有限制(大约是几百个)。

     e.cookie只能保存字符串

转载地址:http://gwrws.baihongyu.com/

你可能感兴趣的文章
提取面狭长角
查看>>
Arcsde表空间自动增长
查看>>
Arcsde报ora-29861: 域索引标记为loading/failed/unusable错误
查看>>
记一次断电恢复ORA-01033错误
查看>>
C#修改JPG图片EXIF信息中的GPS信息
查看>>
从零开始的Docker ELK+Filebeat 6.4.0日志管理
查看>>
Sequelize的原始查询的时区问题
查看>>
How it works(1) winston3源码阅读(A)
查看>>
How it works(2) autocannon源码阅读(A)
查看>>
How it works(3) Tilestrata源码阅读(A)
查看>>
How it works(12) Tileserver-GL源码阅读(A) 服务的初始化
查看>>
uni-app 全局变量的几种实现方式
查看>>
echarts 为例讲解 uni-app 如何引用 npm 第三方库
查看>>
uni-app跨页面、跨组件通讯
查看>>
springmvc-helloworld(idea)
查看>>
JDK下载(百度网盘)
查看>>
idea用得溜,代码才能码得快
查看>>
一篇掌握python魔法方法详解
查看>>
数据结构和算法5-非线性-树
查看>>
数据结构和算法6-非线性-图
查看>>