cookie

状态管理之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只能保存字符串


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值