zoukankan      html  css  js  c++  java
  • Cookie

    1、Cookie技术特点:会话数据保存在浏览器客户端。

    2、cookie核心api

        1)构造Cookie对象

             Cookie(java.lang.String name, java.lang.String value)

        2)设置cookie

           void setPath(java.lang.String uri)   :设置cookie的有效访问路径

         void setMaxAge(int expiry) : 设置cookie的有效时间

           void setValue(java.lang.String newValue) :设置cookie的值

        3)发送cookie到浏览器端保存

        void response.addCookie(Cookie cookie)  : 发送cookie

        4)服务器接收cookie

        Cookie[] request.getCookies()  : 接收cookie

     

    public class CookieDemo1 extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            //1.创建Cookie对象
            Cookie cookie1 = new Cookie("name","eric");
            //Cookie cookie2 = new Cookie("email","jacky@qq.com");
            //Cookie cookie1 = new Cookie("email","eric@qq.com");
            
            
            /**
             * 1)设置cookie的有效路径。默认情况:有效路径在当前web应用下。 /day11
             */
            //cookie1.setPath("/day11");
            //cookie2.setPath("/day12");
            
            /**
             * 2)设置cookie的有效时间
             * 正整数:表示cookie数据保存浏览器的缓存目录(硬盘中),数值表示保存的时间。
                负整数:表示cookie数据保存浏览器的内存中。浏览器关闭cookie就丢失了!!
                零:表示删除同名的cookie数据
    
             */
            //cookie1.setMaxAge(20); //20秒,从最后不调用cookie开始计算
            cookie1.setMaxAge(-1); //cookie保存在浏览器内存(会话cookie)
            //cookie1.setMaxAge(0);
            
            
            //2.把cookie数据发送到浏览器(通过响应头发送: set-cookie名称)
            //response.setHeader("set-cookie", cookie.getName()+"="+cookie.getValue()+",email=eric@qq.com");
            //推荐使用这种方法,避免手动发送cookie信息
            response.addCookie(cookie1);
            //response.addCookie(cookie2);
            //response.addCookie(cookie1);
            
    
            
            //3.接收浏览器发送的cookie信息
            /*String name = request.getHeader("cookie");
            System.out.println(name);*/
            Cookie[] cookies = request.getCookies();
            //注意:判断null,否则空指针
            if(cookies!=null){
                //遍历
                for(Cookie c:cookies){
                    String name = c.getName();
                    String value = c.getValue();
                    System.out.println(name+"="+value);
                }
            }else{
                System.out.println("没有接收cookie数据");
            }
            
        }
    
    }

    3、cookie原理

    1)服务器创建cookie对象,把会话数据存储到cookie对象中。

          new Cookie("name","value");

    2)  服务器发送cookie信息到浏览器

          response.addCookie(cookie); 

          举例: set-cookie: name=eric  (隐藏发送了一个set-cookie名称的响应头)

    3)浏览器得到服务器发送的cookie,然后保存在浏览器端。

    4)浏览器在下次访问服务器时,会带着cookie信息

                        举例: cookie: name=eric  (隐藏带着一个叫cookie名称的请求头)

    5)服务器接收到浏览器带来的cookie信息

                        request.getCookies();

      

    4、cookie的细节处理

      1)void setPath(java.lang.String uri)   :设置cookie的有效访问路径。有效路径指的是cookie的有效路径保存在哪里,那么浏览器在有效路径下访问服务器时就会带着cookie信息,否则不带cookie信息。

                               

          2)void setMaxAge(int expiry) : 设置cookie的有效时间。

                      正整数:表示cookie数据保存浏览器的缓存目录(硬盘中),数值表示保存的时间。

                      负整数:表示cookie数据保存浏览器的内存中。浏览器关闭cookie就丢失了!!

                      零:表示删除同名的cookie数据

            3)Cookie数据类型只能保存非中文字符串类型的。可以保存多个cookie,但是浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。

                    

  • 相关阅读:
    父子进程 signal 出现 Interrupted system call 问题
    一个测试文章
    《淘宝客户端 for Android》项目实战 html webkit android css3
    Django 中的 ForeignKey ContentType GenericForeignKey 对应的数据库结构
    coreseek 出现段错误和Unigram dictionary load Error 新情况(Gentoo)
    一个 PAM dbus 例子
    漫画统计学 T分数
    解决 paramiko 安装问题 Unable to find vcvarsall.bat
    20141202
    js
  • 原文地址:https://www.cnblogs.com/flei/p/6713764.html
Copyright © 2011-2022 走看看