JAVA中Cookie MaxAge属性及其使用-阿里云开发者社区

开发者社区> ghost丶桃子> 正文

JAVA中Cookie MaxAge属性及其使用

简介:
+关注继续查看

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。


特别说明:尊重作者的劳动成果,转载请注明出处哦~~~http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp98

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

相关文章
Input的size与maxlength属性的区别
最近做项目用到input的size和maxlength属性,以前只顾用没有用心去看看这2个标签的区别,今天周末baidu了一下,有所理解。特记录于此!   Name:    Name2:  maxlength="5",则input输入框中只能够输入5个字符 size="5",表示input输入框只显示5个可见的字符,但你可以输入'无数'多字符内容 即:size属性规定输入字段的宽度(此处即是Name2文本框只显示5个字符大小的宽度), 由于 size 属性是一个可视化的设计属性,我们应使用 CSS 中的width来代替它。
744 0
使用3dmax 9.0导入Illustrator 文件时提示"Line in file exceeds 255 characters"
在使用3dmax 9.0时,导入Illustrator文件时提示"Line in file exceeds 255 characters"(之前8.0也有同样的问题)引起这个问题的原因是Illustrator CS(V 11.0) 和 CS2(V 12.0) 存储 .ai 文件使用的是一种“不断行”的存储方式,也就是那一行存储的字符超过了255个字符。
642 0
怎么设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程
7081 0
Spring使用外部属性文件以及常见错误(内附大量图片,很有借鉴意义)
一、在 Spring Config 文件中配置 Bean 时,有时候需要在 Bean 的配置里添加 系统部署的细节信息,如文件路径,数据源配置信息。而这些部署细节实际上需要在配置文件外部来定义。
740 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
7896 0
spring-自动加载配置文件\使用属性文件注入
在上一篇jsf环境搭建的基础上 , 加入spring框架 , 先看下目录结构 src/main/resources 这个source folder 放置web项目所需的主要配置,打包时,会自动打包到WEB-INF下 首先看下pom.
931 0
使用SPELLCHECK属性禁用输入框拼写检查
我们经常会遇到一些可编辑文本内容中显示红色下划波浪线,类似于word文档中错误单词的拼写检查,使得该标签内容很不美观。那么如何关闭textarea等可编辑文本字段的拼写检查呢?这里,我们可以通过一个Html5全局属性spellcheck来解决禁用拼写检查的功能。
1384 0
1955
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载