详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp98
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中,我们可以使用HttpServletResponse和HttpServletRequest接口来操作Cookie。写入Cookie的过程通常如下: 1. 创建一个Cookie对象,例如: ```java Cookie cookie = new Cookie("key", "value"); ``` 2. 设置...
- **Path**: 定义了 Cookie 在哪个 URL 路径下有效,默认情况下,Cookie 只在创建它的网页及其子目录下的网页中有效。 - **Domain**: 定义了 Cookie 在哪个域名下有效,如果指定了该属性,那么该 Cookie 将在指定的...
- Spring框架提供了`WebUtils`工具类,对Cookie的操作进行了封装,可以方便地在Spring MVC项目中使用。 - 在实际开发中,还可以结合Session来实现更复杂的会话管理,Session与Cookie相辅相成,共同构建了Web应用中...
Cookie对象需要设置属性,如名称(name)、值(value)、路径(path)、域名(domain)、过期时间(maxAge)等。 3. **Cookie的读取** 在客户端,当浏览器发起新的HTTP请求时,会自动附带相关的Cookie。在服务器端...
Java语言中提供了处理Cookie的机制,使得开发人员可以方便地在Java Web应用中使用Cookie。 Cookie,中文也称为“小甜饼”,是一种服务器发送到用户浏览器并保存在本地的一小块数据,它会在之后的浏览器会话中被发送...
2. **生命周期与过期**:Cookie的生命周期由服务器设定,可以通过`Max-Age`或`Expires`属性来定义。若无明确设置,浏览器关闭时,临时Cookie(Session Cookie)将被删除;而设置了过期时间的Cookie则会持续存在直到...
- **实现方式**:通过设置Cookie的`Max-Age`属性为一个正数值或设置`Expires`属性来指定过期时间。 #### 三、实例应用 - **自动登录功能**:网站通常会提供“记住我”选项,即通过设置持久Cookie来保存用户的登录...
此外,如果Cookie用于会话管理,我们还需要测试Cookie过期时间(Max-Age)的处理,以及当Cookie不存在或被删除时应用的行为。我们可以模拟不同的场景,如发送一个没有指定Cookie的请求,或者删除已存在的Cookie,...
3. **Max-Age**: 以秒为单位定义Cookie的生命周期,若不设置,默认为会话Cookie,关闭浏览器即消失。 4. **Secure**: 如果设置,只有在HTTPS连接下,浏览器才会发送Cookie到服务器,增强安全性。 5. **HttpOnly**: ...
通过设置`maxAge`为非负整数,可以指定Cookie的存活时间;若设置为`0`,则表示立即删除Cookie。 - **path**:指定了Cookie可被哪些路径下的资源访问。默认情况下,Cookie仅能被生成它的应用程序路径下的资源访问。...
- 避免在JSP中使用全局变量。 - 使用 `synchronized` 关键字。 **三十三、如何防止输出被浏览器缓存** - 在响应头中添加 `Cache-Control: no-cache`。 **三十四、如何设置Cookie** - 使用 `response.addCookie...
根据给定的文件信息,我们可以深入探讨Bean标签库在JavaServer Pages (JSP) 和 Struts 框架中的应用及其重要性。 ### Bean标签库简介 Bean标签库是Struts框架的一部分,它提供了一系列用于操作JavaBeans的标签。...
- **特点**:可以通过设置 maxAge 属性控制 Cookies 的生存周期,支持设置为长期有效。 - **适用性**:适用于需要长期保持用户状态的场景。 **2. Session** - **限制**:虽然可以尝试设置 Session 的最大空闲时间,...