JAVA中级(十一)cookie详解和使用,生命周期

cookie是一种会话技术。它能够将需要的信息持久的保存在用户的磁盘上以供下次请求资源时带上这些信息。比如网址的自动登入。用户第一次登入时将账号密码保存在用户的磁盘上然后用户再次访问这个网址的时候就不需要再自己手动登入

在介绍cookie前需要先了解一些知识。
一,浏览器中的会话
当你打开浏览器然后访问了多个网站在关闭浏览器的过程就是浏览器中的会话。这个过程也叫一次会话。

会话管理技术cookie介绍

在与浏览器会话的过程中总会产生各种数据。有些数据我们需要将其保存下来。这时候就要用到会话管理技术。cookie就是其中一种。还一种是session

cookie是客户端技术,它会将用户访问服务器资源产生的数据保存在用户客户端的磁盘中。这样在下次访问同一个服务器资源的时候就能够带上这些用户各自的数据来进行操作
1,创建一个cookie并添加到浏览器中

Cookie cookie = new Cookie(String name,String value);

方法返回值描述
Cookie cookie = new Cookie(String name,String value);构造方法创建一个cookie,这个cookie保存了一个name=value这样的值
response.addCookie(Cookie cookie)void该方法把一个cookie设置到浏览器中,在浏览器的响应头中会有一个Set-Cookie:name=value这样的值
 protected void doGet(HttpServletRequest request, HttpServletResponse response)  {
            //创建一个cookie,传入一个name和value.下面这个cookie里面就保存了一个name=zhangsan这样的值
            Cookie cookie = new Cookie("name","zhangsan");
            //然后调用response.addCookie(Cookie cookie)后才能把cookie设置到浏览器中
            response.addCookie(cookie);
    }

然后启动在访问该资源

在这里插入图片描述
这样一个Cookie就设置完了。

2,获取Cookie
设置了Cookie就是为了下次访问能从这个Cookie上获取数据。

方法返回值描述
request.getCookies()Cookie[] cookie获取所有Cookie,返回一个Cookie数组.如果没有Cookie返回null
protected void doGet(HttpServletRequest request, HttpServletResponse response)  {
        Cookie[] cookies = request.getCookies();
        if(cookies!=null){
        	//这样来获取保存在客户端上的cookie
            for (Cookie cookie: cookies) {
                System.out.println(cookie.getName()+"="+cookie.getValue());
                //cookie的其他操作
            }
        }else{
            Cookie cookie = new Cookie("name","zhangsan");
            response.addCookie(cookie);
        }
    }

执行第一次设置cookie在执行第二次后结果如下
在这里插入图片描述
3,设置有效时间
cookie默认情况下在浏览器关闭后就会失效。即一次会话后就失效。因为cookie是放在浏览器缓存的,浏览器关闭会清除缓存所以cookie会失效。要想使这个cookie在浏览器关闭后仍然有效就需要设置有效时间将其写到磁盘下。

方法返回值描述
cookie.setMaxAge(int second)void设置cookie有效时间,单位为秒,在有效时间内即便关闭了浏览器cookie也不会失效
protected void doGet(HttpServletRequest request, HttpServletResponse response)  {
            Cookie cookie = new Cookie("name","zhangsan");
            //设置有效时间为60秒
            cookie.setMaxAge(60);
            response.addCookie(cookie);      
    }

然后执行结果如下:
在这里插入图片描述
在这60秒期间即便你关闭浏览器在打开然后在访问该资源也能获取cookie

4,设置有效路径
有时你需要你设置的cookie在某个路径下的资源都能共享使用,那就用以下这个方法。

方法返回值描述
cookie.setPath(String url);void设置有效路径,在该路径下的所有资源都能共享这个cookie

有以下场景
在这里插入图片描述

/servlet1
public class ServletDemo1 extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)  {
            Cookie cookie = new Cookie("name","zhangsan");
            //设置h5所在的路径
            String realPath = this.getServletContext().getRealPath("/html");
            cookie.setPath(realPath);
            response.addCookie(cookie);
    }
}
//servlet2
public class ServletDemo2 extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //获取cookie,如果有cookie就表示有效路径设置成功
        Cookie[] cookies = request.getCookies();
        System.out.println(cookies);
    }
}

//h5.html部分
<body>
    <a href="http://localhost:8080/qjq/servletDemo2">访问servletDemo2</a>
</body>

接着启动项目,首先先进入h5.html访问servletDemo2
结果如下,这时没有cookie:
在这里插入图片描述
然后访问servletDemo1设置一个cookie,在从h5.html访问servletDemo2
结果如下,这时已经有cookie了说明有效路径设置成功
在这里插入图片描述
5,Cookie的生命周期
Cookie也是一个类,我们需要关注一下它什么时候生成什么时候消亡。这样我们才能更好的确定何时获取Cookie

(1)Cookie的出生
当执行完这句代码的时候就代表这个Cookie诞生
Cookie cookie = new Cookie(String name,String value);

(2)Cookie的消亡
默认情况下,在你关闭客户端后Cookie就会消失。此时你去获取cookie会返回null
如果设置了有效时间后则需要在有效时间到期后才会消亡。

6,cookie的其他方法

方法返回值描述
getPath()String获取cookie的有效路径
getName()String获取cookie的名称
getValue()String获取cookie的值
getMaxAge()int获取cookie的有效期,单位为秒
setDomain(String pattern)void设置cookie的有效域
getDomain(String pattern)String获取cookie的有效域
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值