Java管理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干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。
Java管理Cookie增删改查操作。的更多相关文章
- AD 域服务简介(三)- Java 对 AD 域用户的增删改查操作
博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 Java 获取 AD 域用户, ...
- Android SQLite 数据库 增删改查操作
Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...
- Scala对MongoDB的增删改查操作
=========================================== 原文链接: Scala对MongoDB的增删改查操作 转载请注明出处! ==================== ...
- 论坛模块_版块管理_增删改查&实现上下移动
论坛模块_版块管理1_增删改查 设计实体Forum.java public class Forum { private Long id; private String name; private St ...
- 数据库开发基础-SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)
控制数据库的服务: 方法一: 1.Windows+R 打开运行 打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据 ...
- (转)SQLite数据库增删改查操作
原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...
- 05_Elasticsearch 单模式下API的增删改查操作
05_Elasticsearch 单模式下API的增删改查操作 安装marvel 插件: zjtest7-redis:/usr/local/elasticsearch-2.3.4# bin/plugi ...
- JDBC连接数据库及增删改查操作
什么是JDBC?Java语言访问数据库的一种规范,是一套APIJDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类 ...
- MySQL数据库的权限问题操作及基本增删改查操作
前面我们讲了mysql的基本内容,现在我们详细的了解一下mysql中的具体操作. what's the SQl SQL(Structured Query Language 即结构化查询语言) SQL语 ...
随机推荐
- 72.Minimum Window Substring(最小子串窗口)
Level: Hard 题目描述: Given a string S and a string T, find the minimum window in S which will contain ...
- Windows程序设计--(四)文本输出
4.1 绘制和重绘 4.1.2 有效矩阵和无效矩阵 在擦除对话框之后,需要重画的被对话框遮住的矩形区域,这个区域称为「无效区域」或「更新区域」.正是显示区域内无效区域的存在,才会让Windows将一个 ...
- smbsh - 允许用UNIX命令访问NT文件系统
总览 smbsh 描述 此程序是Samba套件的一部分. smbsh允许你用UNIX命令诸如ls,egrep和rcp等来访问NT文件系统.必须用动态链接的shell以便使smbsh工作正常. 从命令提 ...
- Thymeleaf入门——入门与基本概述
https://www.cnblogs.com/jiangbei/p/8462294.html 一.概述 1.是什么 简单说, Thymeleaf 是一个跟 Velocity.FreeMarker 类 ...
- go语言从例子开始之Example35.原子计数器
Go 中最主要的状态管理方式是通过通道间的沟通来完成的,我们在工作池的例子中碰到过,但是还是有一些其他的方法来管理状态的.这里我们将看看如何使用 sync/atomic包在多个 Go 协程中进行 原子 ...
- maven 配置自动本地/线上不同配置自动打包
工程结构:在resource下新建开发,线上不同文件夹存放不同配置文件 pom.xml配置文件 <!-- maven配置不同环境打包 --> <build> <plugi ...
- 前端移动开发--viewpoint
移动开发时,一般都会在头部加载这样一行meta标签 <meta name="viewport" content="width=device-width, initi ...
- HTML5 canvas绘制图形
demo.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- 【串线篇】Mybatis缓存简介
缓存:暂时的存储一些数据:加快系统的查询速度... CPU: 主频:4-2.7GHZ 内存:4G-8G 1333MHZ 2166MHZ CPU:一级缓存(4MB):二级缓存 (16MB); ...
- Python 语音识别
调用科大讯飞语音听写,使用Python实现语音识别,将实时语音转换为文字. 参考这篇博客实现的录音,首先在官网下载了关于语音听写的SDK,然后在文件夹内新建了两个.py文件,分别是get_audio. ...