Java基础系列(基础):Java使用Cookie增删改查操作!

导读:本篇文章讲解 Java基础系列(基础):Java使用Cookie增删改查操作!,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

Java基础系列(基础):Java使用Cookie增删改查操作!


前言

今天博主将为大家分享:Java基础系列(基础):Java使用Cookie增删改查操作!不喜勿喷,如有异议欢迎讨论!


什么是Cookie?

Cookie是由W3C组织提出,最早由NetScape社区发展的一种机制。

Cookie是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个cookie。

Cookie的作用就是用于解决”如何记录客户端的用户信息”:

  • 当用户访问web页面时,他的名字可以记录在Cookie中。

  • 在用户下一次访问该页面时,可以在Cookie中读取用户访问记录。

Cookie实际上是一小段文本信息(上限为4kb)。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器可以把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务还可以根据需要修改Cookie的内容。


Cookie的属性

属性名 描述
name Cookie的名称,Cookie一旦创建,名称便不可更改
value Cookie的值,如果值为Unicode字符,需要为字符编码。如果为二进制数据,则需要使用BASE64编码
maxAge Cookie失效的时间,单位秒。如果为整数,则该Cookie在maxAge秒后失效。如果为负数,该Cookie为临时Cookie,关闭浏览器即失效,浏览器也不会以任何形式保存该Cookie。如果为0,表示删除该Cookie。默认为-1。
secure 该Cookie是否仅被使用安全协议传输。安全协议。安全协议有HTTPS,SSL等,在网络上传输数据之前先将数据加密。默认为false。
path Cookie的使用路径。如果设置为“/sessionWeb/”,则只有contextPath为“/sessionWeb”的程序可以访问该Cookie。如果设置为“/”,则本域名下contextPath都可以访问该Cookie。注意最后一个字符必须为“/”。
domain 可以访问该Cookie的域名。如果设置为“.google.com”,则所有以“google.com”结尾的域名都可以访问该Cookie。注意第一个字符必须为“.”。
Comment 该Cookie的用处说明,浏览器显示Cookie信息的时候显示该说明。
version Cookie使用的版本号。0表示遵循Netscape的Cookie规范,1表示遵循W3C的RFC 2109规范

获取所有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就行了。


到这里:Java基础系列(基础):Java使用Cookie增删改查操作!分享完毕了,快去试试吧!


最后

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

  • 更多参考精彩博文请看这里:《陈永佳的博客》

  • 喜欢博主的小伙伴可以加个关注、点个赞哦,持续更新嘿嘿!


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/97798.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!