API文档中对MaxAge的描述:

public void setMaxAge(int expiry)

Sets the maximum age of the cookie in seconds.

A positive valueindicates that the cookie will expire after that many seconds have passed. Note that the value is the maximum age when the cookie will expire, not the cookie’s current age.

A negative value means that the cookie is not stored persistently and will be deleted when the Web browser exits. A zero value causes the cookie to be deleted.

Parameters: expiry – an integer specifying the maximum age of the cookie in seconds; if negative, means the cookie is not stored; if zero, deletes the cookie

(maxAge 可以为正数,表示此cookie从创建到过期所能存在的时间,以秒为单位,此cookie会存储到客户端电脑,以cookie文件形式保存,不论关闭浏览器或关闭电脑,直到时间到才会过期。

可以为负数,表示此cookie只是存储在浏览器内存里,只要关闭浏览器,此cookie就会消失。maxAge默认值为-1。

还可以为0,表示从客户端电脑或浏览器内存中删除此cookie。)

如果maxAge属性为正数,则表示该Cookie会在maxAge秒之后自动失效。浏览器会将maxAge为正数的Cookie持久化,即写到对应的Cookie文件中。无论客户关闭了浏览器还是电脑,只要还在maxAge秒之前,登录网站时该Cookie仍然有效。

如果maxAge为负数,则表示该Cookie仅在本浏览器窗口以及本窗口打开的子窗口内有效,关闭窗口后该Cookie即失效。maxAge为负数的Cookie,为临时性Cookie,不会被持久化,不会被写到Cookie文件中。Cookie信息保存在浏览器内存中,因此关闭浏览器该Cookie就消失了。Cookie默认的maxAge值为-1。

如果maxAge为0,则表示删除该Cookie。Cookie机制没有提供删除Cookie的方法,因此通过设置该Cookie即时失效实现删除Cookie的效果。失效的Cookie会被浏览器从Cookie文件或者内存中删除。

response对象提供的Cookie操作方法只有一个添加操作add(Cookie cookie)。要想修改Cookie只能使用一个同名的Cookie来覆盖原来的Cookie,达到修改的目的。删除时只需要把maxAge修改为0即可。

在所遇到的项目中,Action里创建了一个cookie,maxAge为-1,紧接着在另一个方法中要删除cookie,就可以通过创建一个同名同域的cookie,然后将maxAge设置为0,再通过response的addCookie方法对客户端的cookie文件或浏览器内存中的cookie进行删除。

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

注意二、从客户端读取Cookie时,包括maxAge在内的其他属性都是不可读的,也不会被提交。浏览器提交Cookie时只会提交name与value属性。maxAge属性只被浏览器用来判断Cookie是否过期。

Cookie cookies[] = request.getCookies();

if (cookies != null)

{

for (int i = 0; i < cookies.length; i++)

{

if (cookies[i].getName().equalsIgnoreCase(cookieName))

{

return (Cookie) cookies[i].clone();

}

}

注意,这表示从request请求里获得cookie文件内容,只能获得name和value。

JAVA中Cookie MaxAge属性及其使用相关推荐

  1. 【转】JAVA中Cookie MaxAge属性及其使用

    出处:http://www.iteye.com 转自:http://hi.baidu.com/suofang/item/06ea24ba63a7dceb4fc7fd17 API文档中对MaxAge的描 ...

  2. java中Cookie详细介绍

    Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是 ...

  3. java 中cookie是什么_什么是cookie?

    为什么要用Cookie 浏览器与WEB服务器之间是使用HTTP协议进行通讯的,而HTTP协议本身是无状态的.什么是无状态呢,即服务器无法判断浏览器身份,即无论浏览器是否已经访问过,服务器都会当成第一次 ...

  4. 在java中为什么_属性绑定到类型_方法绑定到对象_13. Java基础之类型信息(RTTI和反射)...

    一. Java反射机制介绍 Java 反射机制.通俗来讲呢,就是在运行状态中,我们可以根据"类的部分已经的信息"来还原"类的全部的信息".这里"类的部 ...

  5. java中能对属性封装吗_JAVA中的封装

    JAVA中的封装性就是指对外部不可见. 封装之后的属性和方法对象是不能直接访问的. 类中的全部属性都必须封装,封装之后的属性必须通过setter和getter方法设置和取得. package pack ...

  6. 如何在Java中获取系统属性?

    The System class in Java maintains a set of properties. These properties are stored in the form of k ...

  7. 在Java中获取系统属性

    Java语言以其面向对象.跨平台.可移植性好.安全性高等优点,受到众多编程人员的青睐,越来越多的人将其作为应用软件开发语言的首选. 在Java应用程序运行时,特别是需要在跨平台工作环境下运行时,需要确 ...

  8. 关于java中创建对象时属性的初始化过程

    java是一种面向对象的编程语言,那么了解创建对象时程序会怎么执行就变得尤为重要,下面我们就一起看看在我们使用new关键字创建对象时是怎么对属性初始化的: 下面是一个Person类,其中有成员变量ag ...

  9. java属性定义_在java中定义抽象属性

    抽象关键字通常应用于类和方法,以便将某些行为的实现委托给子类. Java不支持抽象属性,如果您试图将类属性标记为抽象,则会得到编译错误. 在本教程中,将介绍两种定义抽象属性的方法,这些属性由子类设置, ...

最新文章

  1. 高通5G开始挤牙膏?骁龙865+发布,性能小幅提升,一加听了要笑,魅族看了会流泪...
  2. C++ decltype类型指示符
  3. CSRF 攻击的应对之道--转
  4. C++primer CH12智能指针
  5. 腾讯云COS对象存储图片文件API的详细步骤过程
  6. SpringBoot集成Myabtis
  7. 微型计算机接口部件的结构,微机接口课后习题解析.doc
  8. linux 容器_Linux容器的幕后花絮
  9. 【机器学习】监督学习--(回归)决策树③--回归树
  10. 《Qt 数据库详解》博客系列文章
  11. BigData | 一文带你搞清楚“数据倾斜”
  12. 在没有上传服务器端的情况下看到上传图片的效果图window.createObjectURL
  13. 软件智能:aaas系统的 AI服务功能:大纲图的无意识代理功能和八卦图的关系
  14. 财务会计之借贷记账法的【科目方向】和【科目余额方向】分析
  15. 陆港澳台正则 + 陆港澳台身份证+回乡证+台胞证+护照正则表达式,及 根据身份证号码,获取性别、获取生日、计算年龄、获取地址、获取生肖、获取星座...
  16. python——人工智能(AI)之网络图片文字识别案例详细讲解
  17. Clock skew detected. Your build may be incomplete
  18. 先试后买!解析购物新体验背后的移动AI+AR技术
  19. 浅谈SBOM(软件物料清单)
  20. Cisco Packet Tracer 交换机的VLAN划分

热门文章

  1. 5款用于办公的电脑软件
  2. 【FatFs】基于STM32 SD卡移植FatFs文件系统
  3. 将整数字符串转成整数值
  4. 用Python来进行词频统计
  5. jpa查询表的部分字段
  6. combobox qt 设置不可更改_[WPF] 实现根据ComboBox选项设定其他控件使能(Enable\Disable)状态...
  7. Apache atlas使用说明(UI功能详解)
  8. 西门子二代精简屏无法正常显示中文字符时,如何给屏幕传送Chinese fonts?
  9. R语言 根据变量包含某些字符,生成新变量
  10. 【JavaScript】制作一个抽奖转盘页面