Java操作Cookie实战+Cookie类源码分析(增删改查)

先看一下Java中Cookie类的源码,先来看一下有什么属性

//
// cookie本身的属性
// cookie的信息由键/值对组成
//

private String name;   // private String value;  // 
private String comment;    // 注释,用来描述cookie的用途
private String domain; // 可访问cookie的域名,比如你想让a.site.comb.site.com共享cookie,则需要把这个属性设置为*.site.com
private int maxAge = -1;   // cookie的有效时间
private String path;   // 可访问cookie的路径,默认为Path为产生cookie时的路径,此时cookie只能被该路径以及子路径下的页面访问;可以将Path设置为/,使cookie可以被网站下所有页面访问。
private boolean secure;    // true时只有HTTPS时才会生效,HTTP不会。默认为false
private int version = 0;   // cookie的版本,由cookie的创建者定义。
private boolean isHttpOnly = false;   // HTTP-Only 意思是告之浏览器该 cookie 绝不能通过 JavaScript  document.cookie 属性访问。目的时阻止通过 JavaScript 发起的跨站脚本攻击 (XSS) 窃取 cookie 的行为。

再来看一下Cookie类提供的方法,也都是对属性的操作


下面开始实战

1.增加cookie

/**
 * 增加cookie
 *
 * @param response
 */
@RequestMapping("/addCookie")
public void addCookie(HttpServletResponse response) {
    Cookie cookie = new Cookie("foo", "bar");
    response.addCookie(cookie);
}

访问:http://localhost:8080/addCookie

浏览器看一下,添加成功


2.读取Cookie

/**
 * 读取cookie
 *
 * @param request
 * @return
 */
@RequestMapping("/showCookie")
public void showCookie(HttpServletRequest request) {
    Cookie[] cookies = request.getCookies();
    if (cookies != null) {
        for (Cookie cookie : cookies) {
            String name = cookie.getName();
            String value = cookie.getValue();
            System.out.println("name:" + name + ",value:" + value);
        }
    } else {
        System.out.println("cookies is null");
    }
}

访问:http://localhost:8080/showCookie


3.修改指定Cookie

/**
 * 修改Cookie
 *
 * @param request
 * @param response
 */
@RequestMapping("/editCookie")
public void editCookie(HttpServletRequest request, HttpServletResponse response) {
    Cookie[] cookies = request.getCookies();
    String name = "foo";
    if (cookies != null) {
        for (Cookie cookie : cookies) {
            if (cookie.getName().equals(name)) {
                cookie.setValue("new_bar");
                System.out.println("修改的name" + cookie.getName() + "修改后的值为:" + cookie.getValue());
                response.addCookie(cookie);
            }
        }
    } else {
        System.out.println("cookies is null");
    }
}

访问:http://localhost:8080/editCookie


4.删除Cookie

/**
 * 删除Cookie
 *
 * @param request
 * @param response
 */
@RequestMapping("/delCookie")
public void delCookie(HttpServletRequest request, HttpServletResponse response) {
    Cookie[] cookies = request.getCookies();
    String name = "foo";
    if (cookies != null) {
        for (Cookie cookie : cookies) {
            if (cookie.getName().equals(name)) {
                cookie.setMaxAge(0);
                response.addCookie(cookie);
                System.out.println("删除成功");
                break;
            }
        }
    }
}

浏览器看一下

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于cookie的封装,可以实现增删改查功能,以下是一个简单的实现: ```javascript // 封装cookie操作的工具函数 const cookieUtils = { // 获取cookie值 get(key) { const cookieStr = document.cookie; const cookieArr = cookieStr.split('; '); for (let i = 0; i < cookieArr.length; i++) { const itemArr = cookieArr[i].split('='); if (itemArr[0] === key) { return itemArr[1]; } } return null; }, // 设置cookie值 set(key, value, expires = 0, path = '/') { const date = new Date(); date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000); const expiresStr = expires === 0 ? '' : ';expires=' + date.toGMTString(); document.cookie = `${key}=${value};path=${path}${expiresStr}`; }, // 删除cookie值 remove(key, path = '/') { this.set(key, '', -1, path); }, // 更新cookie值 update(key, value, expires = 0, path = '/') { this.set(key, value, expires, path); }, }; ``` 使用方法如下: ```javascript // 设置cookie cookieUtils.set('username', 'Tom', 7, '/'); // 获取cookie const username = cookieUtils.get('username'); // 更新cookie cookieUtils.update('username', 'Jerry', 7, '/'); // 删除cookie cookieUtils.remove('username'); ``` 其中,`set`方法用于设置cookie值,第一个参数为cookie的名称,第二个参数为cookie的值,第三个参数为cookie的过期时间(单位为天),默认为0(表示在当前会话结束时过期),第四个参数为cookie的路径,默认为根路径。`get`方法用于获取cookie值,第一个参数为cookie的名称。`update`方法用于更新cookie值,其参数和`set`方法相同。`remove`方法用于删除cookie值,第一个参数为cookie的名称,第二个参数为cookie的路径,默认为根路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值