Cookie的有效期
Cookie的maxAge决定着Cookie的有效期,单位为秒(Second)。Cookie中通过getMaxAge()方法与setMaxAge(int maxAge)方法来读写maxAge属性。
如果maxAge属性为正数,则表示该Cookie会在maxAge秒之后自动失效。浏览器会将maxAge为正数的Cookie持久化,即写到对应的Cookie文件中。无论客户关闭了浏览器还是电脑,只要还在maxAge秒之前,登录网站时该Cookie仍然有效。下面代码中的Cookie信息将永远有效。
- Cookie cookie = new Cookie("username", "helloweenvsfei");
// 新建Cookie -
cookie.setMaxAge(Integer.MAX_VALUE); //
设置生命周期为MAX_VALUE -
response.addCookie(cookie); //
输出到客户端
如果maxAge为负数,则表示该Cookie仅在本浏览器窗口以及本窗口打开的子窗口内有效,关闭窗口后该Cookie即失效。maxAge为负数的Cookie,为临时性Cookie,不会被持久化,不会被写到Cookie文件中。Cookie信息保存在浏览器内存中,因此关闭浏览器该Cookie就消失了。Cookie默认的maxAge值为-1。
如果maxAge为0,则表示删除该Cookie。Cookie机制没有提供删除Cookie的方法,因此通过设置该Cookie即时失效实现删除Cookie的效果。失效的Cookie会被浏览器从Cookie文件或者内存中删除,例如:
- Cookie cookie = new Cookie("username", "helloweenvsfei");
// 新建Cookie -
cookie.setMaxAge(0); //
设置生命周期为0,不能为负数 -
response.addCookie(cookie); //
必须执行这一句
response对象提供的Cookie操作方法只有一个添加操作add(Cookie cookie)。要想修改Cookie只能使用一个同名的Cookie来覆盖原来的Cookie,达到修改的目的。删除时只需要把maxAge修改为0即可。
注意:从客户端读取Cookie时,包括maxAge在内的其他属性都是不可读的,也不会被提交。浏览器提交Cookie时只会提交name与value属性。maxAge属性只被浏览器用来判断Cookie是否过期。
Cookie的修改、删除
Cookie并不提供修改、删除操作。如果要修改某个Cookie,只需要新建一个同名的Cookie,并添加到response中覆盖原来的Cookie。
如果要删除某个Cookie,只需要新建一个同名的Cookie,并将maxAge设置为0,并添加到response中覆盖原来的Cookie。注意是0而不是负数。负数代表其他的意义。读者可以通过上例的程序进行验证,设置不同的属性。
注意:修改、删除Cookie时,新建的Cookie除value、maxAge之外的所有属性,例如name、path、domain等,都要与原Cookie完全一样。否则,浏览器将视为两个不同的Cookie不予覆盖,导致修改、删除失败。
相关推荐
有效期为0表示Cookie仅在当前会话期间有效,浏览器关闭后就会删除;若为负数则表示Cookie将一直保存在客户端,直到被手动删除或过期。 ##### 2. 添加Cookie到响应中 创建了Cookie之后,需要将其添加到HTTP响应中,...
总结一下,Java Servlet中的Cookie管理主要包括创建、设置属性(如有效期和路径)、读取、修改和删除。这个例子中的压缩包可能包含了一个简单的Java Servlet项目,演示了如何在服务器端和客户端之间使用Cookie进行...
1. **setMaxAge**: 设置Cookie的有效期(秒)。如果设置为负数,则表示这是一个会话Cookie,即在浏览器关闭后删除。 2. **setPath**: 设置Cookie的路径。通常设置为"/",表示在整个应用范围内有效。 3. **setDomain*...
// 1年有效期 response.addCookie(cookie); ``` Java Cookie在服务器端可以用来实现会话管理、个性化设置等功能,而JS Cookie更多地用在客户端的简单数据存储。 正则表达式(Regex)是一种强大的文本处理工具,...
- 遵循最佳实践,限制Cookie的有效期,不要让其永久存在。 - 对于敏感信息,除了加密外,还可以使用一次性Token,每次登录生成新的Token,旧Token失效。 - 考虑跨站请求伪造(CSRF)攻击,使用CSRF Token来保护...
- 可以设置Cookie的有效期(maxAge),单位为秒。若设置为0,表示删除Cookie;未设置则默认为浏览器会话结束时失效。 - 也可以设置Cookie的作用域,即路径(path)和域名(domain)。默认情况下,Cookie只对当前...
4. **删除Cookie**:如果用户选择退出登录或Cookie有效期到达,服务器需要发送一个Max-Age为0的相同Cookie,通知浏览器删除这个Cookie。 5. **跨域支持**:若需要在多个子域名之间共享Cookie,可以通过设置Cookie的...
// 设置有效期为1小时 response.addCookie(cookie); // 读取Cookie Cookie[] cookies = request.getCookies(); if (cookies != null) { for (Cookie c : cookies) { if (c.getName().equals("username")) { ...
它的关键方法包括`getName()`(获取Cookie的名称)、`getValue()`(获取Cookie的值)、`setComment()`(设置Cookie的注释)、`setMaxAge()`(设置Cookie的有效期)以及`setPath()`和`setDomain()`(分别用于指定...
// 设置Cookie的有效期为一周 response.addCookie(cookie); ``` 这段代码创建了一个名为"username"的Cookie,值为"John",并将有效期设置为7天。 接着,我们讨论如何在客户端读取Cookie。在JSP或Servlet的...
- **删除Cookie**:将Cookie的有效期设置为0,浏览器会立即删除。 ```java cookie.setMaxAge(0); response.addCookie(cookie); ``` **Servlet与Cookie的结合使用** Servlet常与Cookie一起使用来实现会话管理...
为了控制Cookie的有效期,可以调用`setMaxAge()`方法来设置过期时间(单位是秒): ```java Cookie cookie = new Cookie("cookiename", "cookievalue"); cookie.setMaxAge(3600); // 设置有效期为1小时 response....
- **getMaxAge()**: 获取Cookie的有效期,单位是秒。 - **setMaxAge(int expiry)**: 设置Cookie的有效期。通过设置不同的有效期可以控制Cookie何时过期。 4. **getPath() 和 setPath(String uri)** - **getPath...
2. 设置Cookie的有效期,如`cookie.setMaxAge(60 * 60 * 24);`表示一天后过期。 3. 将Cookie添加到响应中,`response.addCookie(cookie);` 读取Cookie则可以通过遍历请求的`Cookie`集合完成,如下: ```java Cookie...
在Java Web开发中,Cookie是一种常用的技术,用于在客户端存储和传递少量信息。本文将详细介绍如何使用Java操作Cookie,特别是如何设置、读取和删除Cookie。 首先,我们来看如何**设置Cookie**。在Java中,我们通常...
以下是关于 Java 操作 COOKIE 的详细说明: 1. **设置 Cookie** - 创建一个名为 "key",值为 "value" 的 Cookie 对象:`Cookie cookie = new Cookie("key", "value");` - 设置生存期:`cookie.setMaxAge(60);` 这...
举个例子,如果你要创建一个名为"user_id",有效期为一天的Cookie,你可以这样做: ```java Cookie userIdCookie = new Cookie("user_id", "123456"); userIdCookie.setMaxAge(60 * 60 * 24); // 24 hours in ...
// 设置 Cookie 有效期为 30 天 response.addCookie(cookie); // 将 Cookie 添加到响应中 ``` 在这个例子中,我们首先通过 `req.getParameter()` 方法获取请求参数中的用户名和密码,然后创建一个新的 Cookie,并...
- 这个Cookie可以通过`setMaxAge(int seconds)`设置有效期,比如可以设置为一天,这样在设定时间内,用户关闭浏览器再打开,仍能保持登录状态。 4. **安全性考虑**: - 虽然Cookie可以方便地保存登录状态,但必须...
- `setMaxAge(int expiry)`:设置Cookie的有效期,单位为秒。正值表示在指定秒数内有效,负值表示浏览器关闭时失效,0则立即删除。 - `getMaxAge()`:获取Cookie的有效期。 举例来说,如果我们希望Cookie在关闭...