首先,看看API文档中对MaxAge的描述:
public void setMaxAge(int expiry)
Sets the maximum age of the cookie in seconds
.
A positive value
indicates
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。
}
分享到:
相关推荐
cookie.setMaxAge(maxAge); cookie.setPath(path); response.addCookie(cookie); } public static String getCookie(HttpServletRequest request, String name) { Cookie[] cookies = request.getCookies(); ...
- `updateCookie(HttpServletResponse response, String name, String newValue, int maxAge, String path, boolean secure)`:更新已存在的Cookie,替换其值或修改存活时间等属性。 4. **使用示例**: - 添加...
- **Max-Age属性**:另一种控制Cookie生命周期的方法是使用Max-Age属性,它可以指定Cookie从设置开始的有效秒数。 - **Session Cookies**:如果没有设置Expires或Max-Age属性,则默认情况下Cookie为会话Cookie,这...
- **实现方式**:通过设置Cookie的`Max-Age`属性为一个正数值或设置`Expires`属性来指定过期时间。 #### 三、实例应用 - **自动登录功能**:网站通常会提供“记住我”选项,即通过设置持久Cookie来保存用户的登录...
Cookie对象需要设置属性,如名称(name)、值(value)、路径(path)、域名(domain)、过期时间(maxAge)等。 3. **Cookie的读取** 在客户端,当浏览器发起新的HTTP请求时,会自动附带相关的Cookie。在服务器端...
2. **生命周期与过期**:Cookie的生命周期由服务器设定,可以通过`Max-Age`或`Expires`属性来定义。若无明确设置,浏览器关闭时,临时Cookie(Session Cookie)将被删除;而设置了过期时间的Cookie则会持续存在直到...
- `getMaxAge()` 和 `setMaxAge(int expiry)`:获取和设置 Max-Age 属性。 - `getPath()` 和 `setPath(String uri)`:获取和设置 Path 属性。 - `getSecure()` 和 `setSecure(boolean flag)`:获取和设置 Secure ...
此外,如果Cookie用于会话管理,我们还需要测试Cookie过期时间(Max-Age)的处理,以及当Cookie不存在或被删除时应用的行为。我们可以模拟不同的场景,如发送一个没有指定Cookie的请求,或者删除已存在的Cookie,...
本篇文章主要探讨了Cookie的定义、特点、重要属性、优缺点、使用场景及其面临的问题。 1. 背景 Cookie的诞生源于HTTP协议的无状态特性。HTTP协议在每次请求和响应之间不保留任何信息,这使得服务端无法识别连续的...
3. **Max-Age**: 以秒为单位定义Cookie的生命周期,若不设置,默认为会话Cookie,关闭浏览器即消失。 4. **Secure**: 如果设置,只有在HTTPS连接下,浏览器才会发送Cookie到服务器,增强安全性。 5. **HttpOnly**: ...
接下来,我们可以设置Cookie的属性,如生存周期(max-age)、路径(path)、域(domain)和安全传输(secure)属性。例如: ```java cookie.setMaxAge(24 * 60 * 60); // 设置Cookie生存周期为一天 cookie.setPath...
现在通常使用max-age属性来代替,max-age以秒为单位设置cookie的生命周期,超时后cookie自动从浏览器中删除。 2. path属性定义了与cookie关联的网页。默认情况下,cookie关联到创建它的页面及其同一目录或子目录下的...
通过设置`maxAge`为非负整数,可以指定Cookie的存活时间;若设置为`0`,则表示立即删除Cookie。 - **path**:指定了Cookie可被哪些路径下的资源访问。默认情况下,Cookie仅能被生成它的应用程序路径下的资源访问。...
- **MaxAge** (int): 设置Cookie的最大生存时间,单位为秒。若为0,则表示没有指定“Max-Age”属性;小于0表示删除Cookie;大于0则表示设置了具体的生存时间。 - **Secure** (bool): 是否仅在安全连接(HTTPS)中...
- **Expires/Max-Age**: 定义 Cookie 的有效期。可以指定具体的到期时间,也可以设置为相对时间。 - **Secure**: 表示此 Cookie 只能通过 HTTPS 协议传输。 - **HttpOnly**: 如果设置此属性,则 JavaScript 无法...
5. `expires/Max-Age`: 设置Cookie的有效期,过期后浏览器将不再发送该Cookie。 6. `httpOnly`: 如果设置,JavaScript将无法访问此Cookie,增加安全性。 7. `secure`: 如果设置,该Cookie只能通过HTTPS安全连接发送...
- `Max-Age`: 最大有效时间,单位为秒。 - `Path`: 生成Cookie的路径。 - `Port`: 可以回传服务端的端口号。 - `Secure`: 是否仅在HTTPS连接中传输。 #### 三、Session详解 ##### 3.1 定义 Session是一种...