Java管理Cookie增删改查操作。-阿里云开发者社区

开发者社区> java技术栈> 正文

Java管理Cookie增删改查操作。

简介: Cookie属性 了解这几个属性之后,就知道如何进行Cookie的操作了。 name Cookie的名称。 value Cookie的值。 maxAge Cookie的失效时间,有以下几种值,默认为-1 值 说明 负数 浏览器关闭后cookie就失效 0 马上清除cookie 正数 设置过期时间,单位:秒 path Cookie的有效路径,/表示这个路径即该工程下都可以访问该cookie 如果不设置路径,那么只有设置该cookie路径及其子路径可以访问。
+关注继续查看

Cookie属性

了解这几个属性之后,就知道如何进行Cookie的操作了。

name

Cookie的名称。

value

Cookie的值。

maxAge

Cookie的失效时间,有以下几种值,默认为-1

说明
负数 浏览器关闭后cookie就失效
0 马上清除cookie
正数 设置过期时间,单位:秒

path

Cookie的有效路径,/表示这个路径即该工程下都可以访问该cookie 如果不设置路径,那么只有设置该cookie路径及其子路径可以访问。

获取所有Cookie

public static Cookie[] getCookies(HttpServletRequest request) {
    return request.getCookies();
}

获取cookie很简单,直接从request中获取即可。

根据名称获取指定Cookie

public static Cookie getCookieByName(HttpServletRequest request, String name) {
    if (StringUtils.isBlank(name)) {
        return null;
    }
    Cookie[] cookies = getCookies(request);
    if (null != cookies) {
        for (Cookie cookie : cookies) {
            if (name.equals(cookie.getName())) {
                return cookie;
            }
        }
    }
    return null;
}

从所有cookie中循环判断进行获取指定cookie。

添加Cookie

public static boolean addCookie(HttpServletResponse response, String name, String value,
            int maxAge) {
    if (StringUtils.isBlank(name) || StringUtils.isBlank(value)) {
        return false;
    }
    Cookie cookie = new Cookie(name.trim(), value.trim());
    if (maxAge <= 0) {
        maxAge = Integer.MAX_VALUE;
    }
    cookie.setMaxAge(maxAge);
    cookie.setPath("/");
    response.addCookie(cookie);
    return true;
}

这个添加很简单。

删除Cookie

public static boolean removeCookie(HttpServletRequest request, HttpServletResponse response,
            String name) {
    if (StringUtils.isBlank(name)) {
        return false;
    }
    Cookie[] cookies = getCookies(request);
    if (null != cookies) {
        for (Cookie cookie : cookies) {
            if (name.equals(cookie.getName())) {
                cookie.setValue(null);
                cookie.setMaxAge(0);
                cookie.setPath("/");
                response.addCookie(cookie);
                return true;
            }

        }
    }
    return false;
}

删除cookie,把value设置为null,把max-age设置为0就行了。

注意

编辑操作和删除操作一样,但是需要注意的是修改、删除Cookie时,除value、maxAge之外的所有属性,例如name、path、domain等,都要与原Cookie完全一样。否则,浏览器将视为两个不同的Cookie不予覆盖,导致修改、删除失败。

推荐阅读


阿里高级Java面试题(首发,70道,带详细答案)

2017派卧底去阿里、京东、美团、滴滴带回来的面试题及答案

Spring面试题(70道,史上最全)

17张图揭密支付宝系统架构

阿里巴巴,排行前10的开源项目!

2018年必看:关于区块链技术的10本书

分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。


扫我关注

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Node.js Cookie管理
Cookie 管理 我们可以使用中间件向 Node.js 服务器发送 cookie 信息,以下代码输出了客户端发送的 cookie 信息: var express=require('express'); var cookieParser=require('cookie-parser'); var util=require('util'); var app=express(); app.
980 0
表格存储 SQL 操作实战
表格存储做为一款结构化存储系统,近期发布了新功能 SQL,大幅简化了查询的门槛,用户无需学习繁琐的 SDK,也不用区分表,索引等不同的接口,可以像访问传统的 MySQL 这类数据库一样,使用 SQL 的方式访问云原生的结构化大数据存储。下面我们就来具体实操下,看看查询用起来顺不顺手。
79 0
QT绘图的底层操作
绘图的底层操作LCD屏幕上的每个点都与显示缓冲区中的数据有特定的关系,对16位色的显示缓冲区,每两个字节对应LCD上的一个像素,因此我们只要修改缓冲区某两个地址上的数据就可以改变LCD上这个点的色彩,如果我们能够得到这个显示缓冲区的地址,应用程序编写者就可以抛开驱动程序那些抽象的接口,直接对显示缓冲区操作。
863 0
C# 线程操作
using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.
570 0
Elasticsearch增、删、改、查操作深入详解(Elasticsearch教程02)|MVP讲堂
横扫你学习 Elasticsearch 的诸多疑惑,让你少走半年弯路!
1862 0
+关注
java技术栈
Java技术栈是一个以 Java 技术为主的原创技术公众号。分享技术包括但不限于 Java 核心技术、多线程编程、Spring Boot、Spring Cloud、缓存、消息队列、架构设计等各种技术干货、Java 面试题、各种技术教程、行业动态等。
182
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载