📜  Servlet – Cookie(1)

📅  最后修改于: 2023-12-03 14:47:24.880000             🧑  作者: Mango

Servlet – Cookie

在Web开发中,Cookie是一种存储在客户端浏览器中的小型文本文件,通常用于跟踪用户会话以及存储用户个人偏好等数据。

在Java Servlet中,可以使用Cookie类来操作Cookie。下面是Cookie类的一些常用方法:

1. Cookie(String name, String value)

该方法用于创建一个名为name,值为value的新Cookie对象。

Cookie cookie = new Cookie("myCookie", "hello world");
2. void setMaxAge(int expiry)

该方法用于设置Cookie的过期时间,单位是秒。如果传入负值,Cookie会在浏览器关闭时被删除。如果传入0,Cookie会被立即删除。

// 设置Cookie的过期时间为30分钟
cookie.setMaxAge(30 * 60);
3. void setPath(String uri)

该方法用于设置Cookie的路径。只有请求uri与Cookie路径相同或包含才会发送该Cookie。

// 设置Cookie的路径为根路径
cookie.setPath("/");
4. void setDomain(String pattern)

该方法用于设置Cookie的域名。只有请求的域名与Cookie的域名相同或者是其子域名才会发送该Cookie。如果没有调用该方法设置域名,则默认为当前请求的服务器名。

// 设置Cookie的域名为example.com
cookie.setDomain("example.com");
5. void setSecure(boolean flag)

该方法用于设置Cookie的安全标记。当该标记被设置为true时,Cookie只会在使用HTTPS协议的请求中发送到服务器。如果没有调用该方法设置安全标记,则默认为false。

// 设置Cookie的安全标记
cookie.setSecure(true);
6. void setValue(String newValue)

该方法用于修改Cookie的值。

cookie.setValue("new value");
7. void setHttpOnly(boolean isHttpOnly)

该方法用于设置Cookie的httponly标志,仅限于浏览器软件从cookie中发送的cookie中使用。如果没有调用该方法,则默认为false。

// 设置Cookie的httpOnly标记
cookie.setHttpOnly(true);
发送Cookie

创建Cookie对象后,需要通过响应对象将Cookie发送到客户端浏览器。在Servlet中可以使用response对象的addCookie方法来添加一个新的Cookie。

response.addCookie(cookie);
获取Cookie

由于Cookie是存储在客户端浏览器中的,因此在服务器端需要通过请求对象获取Cookie。在Servlet中可以使用request对象的getCookies方法来获取请求中的所有Cookie。

Cookie[] cookies = request.getCookies();
删除Cookie

在Servlet中可以通过在发送到浏览器的Cookie中设置过期时间为0来删除Cookie。例如:

Cookie cookieToDelete = new Cookie("cookieToDelete", "value");
cookieToDelete.setMaxAge(0);
response.addCookie(cookie);

以上就是Servlet中操作Cookie的介绍,通过Cookie可以实现用户会话的状态维护、个性化存储及广告追踪等功能。