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;