cookie的生命周期和有效路径

介绍

1.Cookie的生命周期指的是如何管理Cookie什么时候被销毁(删除)

2.setMaxAge()

  • 正数:表示在指定秒数后过期

  • 负数:表示浏览器关闭,Cookie就会被删除(默认值是-1)

  • 0:表示马上删除Cookie

演示Cookie生命周期
代码
package com.test.cookie;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class CookieLive extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("CookieLive 被调用...");

        //创建一个cookie,生命周期为60s
        Cookie cookie = new Cookie("job", "java");
        //1.cookie从创建开始计时,60秒后该cookie就无效了
        //2.浏览器来根据创建的时间来计时,到60s后就认为该cookie无效
        //3.如果该cookie无效,那么浏览器在发送http请求时,就不再携带该cookie
        cookie.setMaxAge(60);
        //将cookie保存到浏览器
        response.addCookie(cookie);

        //给浏览器返回信息,提示已经成功获取cookie信息
        response.setContentType("text/html;charset=utf-8");
        PrintWriter writer = response.getWriter();
        writer.println("<h1> 设置cookie生命周期完成 </h1>");

        //关闭资源
        writer.flush();
        writer.close();

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}
删除cookie
代码
//删除指定cookie,删除name
        //1.得到指定cookie
        Cookie[] cookies = request.getCookies();
        Cookie nameCookie = CookieUtils.readCookieByName("name", cookies);
        if(nameCookie!=null){
        //2.将该cookie的生命周期设置为0
        nameCookie.setMaxAge(0);
        //3.重新保存该cookie,因为已将该cookie生命周期设置为0,等价于让浏览器删除该cookie
        response.addCookie(nameCookie);
        }else {
            System.out.println("没有找到该cookie,无法删除");
        }

 

cookie的有效路径

1.Cookie的有效路径Path设置

默认的路径(通过抓包查看):

2.Cookie的path属性可以有效过滤哪些cookie可以发送给浏览器,哪些不发。path属性是通过请求的地址来进行过滤的

3.规则:

cookie1.setPath=/工程路径

cookie2.setPath=/工程路径/aaa

请求地址:http://ip:端口/工程路径/资源

cookie1 会发送给服务器

cookie2:不会发送给服务器

请求地址:http://ip:端口/工程路径/aaa/资源

cookie1:会发送给服务器

cookie2:会发送给服务器

演示cookie有效路径的使用
代码
package com.test.cookie;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class CookiePath extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("CookiePath 被调用了。。。");

        //1.创建两个不同的cookie
        Cookie cookie1 = new Cookie("address","长沙");
        Cookie cookie2 = new Cookie("salary","20000");
        //2.设置不同的路径
        //request.getContextPath()  =>工程路径
        cookie1.setPath(request.getContextPath());
        //cookie2的有效路径= /工程路径/aaa
        cookie2.setPath(request.getContextPath()+"/aaa");

        //3.保存到浏览器
        response.addCookie(cookie1);
        response.addCookie(cookie2);

        //4.给浏览器返回信息,提示已经成功获取cookie信息
        response.setContentType("text/html;charset=utf-8");
        PrintWriter writer = response.getWriter();
        writer.println("<h1> 设置cookie有效路径成功 </h1>");

        //关闭资源
        writer.flush();
        writer.close();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}
效果图

说明:如果没有设置cookie的有效路径,默认就是/工程路径

  • 13
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值