cookie的简单理解

cookie产生

  的\http协议是无状态,无连接的。无状态的就是指的,一个的接口无论你请求多少次,效果都是一样的。不会因为你请求次数多,而改变什么。无连接的理解就是,当你请求接口时候,只有服务器接受客户端发送信息的瞬间,客户端会和服务端有连接,之后二者就没有了什么关系。
  但会出现一个问题,当你访问接口的时候,可能你每次都要传递一个固定的参数。这时候的你再去获取这个参数可能会很麻烦,这时候cookie就产生了。

cookie介绍

上面说到了cookie的产生。接着,我们进一步理解cookie。

cookie是一种浏览器的技术。cookie信息会存储到浏览器上。当你使用浏览器发送请求的时候,都会携带cookie的值。cookie的值以键值对形式来存储的。

cookie的创建

1.创建cookie,并发送给浏览器

  我们首先通过服务器获取 HttpServletResponse 对象(这里获取的对象是response),然后的创建cookie对象,通过respnse发送给浏览器。

		//创建一个cookie对象
        Cookie cookie=new Cookie("CookieName","CookieValue");
        //将创建的cookie发送给浏览器
        response.addCookie(cookie);

运行完毕后,打开浏览器的调试模式 ,查看到下面会有一句
Set-Cookie: CookieName=CookieValue
这就表示创建了这个cookie。如下图:
在这里插入图片描述

2.介绍一下关于cookie的三个方法

1. setPath()
该方法可以指定携带cookie的目录

//创建一个cookie对象
        Cookie cookie=new Cookie("CookieName","CookieValue");
        //使用setPath()方法
        cookie.setPath("/haveCookie");
        //将创建的cookie发送给浏览器
        response.addCookie(cookie);

运行的方法后,我们发现只有当我们的访问目录在’/haveCookie '下才会有cookie值。
2. setDomain()
该方法可以设置一些跨域的共享cookie。但是实现这种效果仅限于同主域名的情况下。

  		//创建一个cookie对象
        Cookie cookie=new Cookie("CookieName","CookieValue");
        //使用setPath()方法
        cookie.setPath("/");
        //使用setDomain()方法
        cookie.setDomain("one.ssodemo.com");
        //将创建的cookie发送给浏览器
        response.addCookie(cookie);

这里我为了更好观察cookie,我设置了 ‘cookie.setPath("/");’,我使用’ssodemo.com’域名来使用这个方法。会发现cookie添加到了 ‘one.ssodemo.com’ 下。
3. setMaxAge()
该方法可以设置cookie的有效期。当cookie没有设置有效期的时候,是存储到的内存中的。当设置了有效期,无论多短,都是保存到本地的

   //创建一个cookie对象
        Cookie cookie=new Cookie("CookieName","CookieValue");
        //使用setPath()方法
        cookie.setPath("/");
        //使用setDomain()方法
        cookie.setDomain("one.ssodemo.com");
        //设置cookie的有效期(30分钟)
        cookie.setMaxAge(30*60);
        //将创建的cookie发送给浏览器
        response.addCookie(cookie);

效果就不演示了。

cookie的获取

cookie是通过’HttpServletRequest’对象的获取的。

//获取所有的cookie
        Cookie select=null;
        Cookie[] cookies=request.getCookies();
        //遍历所有的cookie
        for(Cookie cookie:cookies){
            //通过判key值来确定cookie
            if("CookieName".equals(cookie.getValue())){
                select=cookie;
            }
        }
        return select;
发布了55 篇原创文章 · 获赞 12 · 访问量 2124
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章