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。

                    

  • 相关阅读:
    SQL查询
    SQL总结(二)连表查询
    SQL总结(一)基本查询
    SQL游标、函数的使用方法
    理解 Virtual DOM(摘)及评价
    virtual DOM的作用:将DOM的维护工作由系统维护转交给virtual DOM维护
    DOM的回流和重绘(重排、重绘)
    并发编程的核心
    执行流(指令流)的控制层级
    go语言的工资好高
  • 原文地址:https://www.cnblogs.com/flei/p/6713764.html
Copyright © 2011-2022 走看看