cookie对象

5.11  cookie对象
cookie对象是由Web服务器端产生后被保存到浏览器中的信息。cookie对象可以用来保存一些小量的信息在浏览器中。目前主流的浏览器(Internet Explorer和Netscape Navigator)都支持cookie。
可以将cookie写到浏览器中,让浏览器来保存cookie的值,如程序5-25.jsp所示。
案例名称:写入cookie
程序名称:5-25.jsp
<%@ page contentType="text/html;charset=GBK" %>
<%
   String strName = "Zhourunfa";
   Cookie c = new Cookie("Name1", strName);
   response.addCookie(c);
%>
写入Cookie<br><br>
<a href="5-26.jsp">查看</a>
程序显示的结果如图5-31所示。
图5-31  写入cookie的值
读取cookie的方法如程序5-26.jsp所示。
案例名称:读出cookie
程序名称:5-26.jsp
<%@ page contentType="text/html;charset=GBK" %>
<HTML><BODY>
<%
    Cookie cookies[] = request.getCookies();
   for(int i=0; i<cookies.length; i++) {
         if(cookies[i].getName().equals("Name1"))
               out.print(cookies[i].getValue());
   }
%>
读出Cookie<br><br>
程序显示结果如图5-32所示。
图5-32  读取cookie的值
在使用cookie时,有一些注意事项:
(1)cookie的存储场所是浏览器,但并不是每一种浏览器都具有cookie功能(Internet Explorer和Netscape Navigator都有cookie功能),同时,在客户端浏览器的安全性设置中可以禁用cookie。所以不能假设cookie的写入一定能够成功。
(2)cookie对象不能单独使用,必须和request对象(cookie的读取)或response对象(cookie对象的写入)结合使用。
(3)不同浏览器中存储的cookie不是通用的,例如,IE存储的cookie只有IE自己可以使用。
(4)存储在浏览器中的cookie对任何Web服务器都是开放的,所以写入的cookie可能被其他网页读取或覆盖掉。
在Spring框架中,`ServerHttpRequest`对象没有直接提供获取Cookie对象的方法。但是您可以通过以下步骤来获取Cookie对象: 1. 使用`getHeaders()`方法获取请求头部信息。 2. 使用`getFirst(HttpHeaders.COOKIE)`方法获取名为`Cookie`的请求头。 3. 使用`org.springframework.http.HttpCookie.parse(String headerValue)`方法解析Cookie字符串并返回一个`List<HttpCookie>`对象。 4. 遍历该列表以获取每个Cookie对象。 以下是一个示例代码: ```java import org.springframework.http.HttpHeaders; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.util.CollectionUtils; import java.util.List; import java.util.Objects; public class CookieUtils { public static void printCookies(ServerHttpRequest request) { HttpHeaders headers = request.getHeaders(); List<String> cookieHeaders = headers.get(HttpHeaders.COOKIE); if (!CollectionUtils.isEmpty(cookieHeaders)) { cookieHeaders.forEach(cookieHeader -> { List<HttpCookie> cookies = HttpCookie.parse(cookieHeader); cookies.forEach(cookie -> { System.out.println("Name: " + cookie.getName()); System.out.println("Value: " + cookie.getValue()); System.out.println("Domain: " + cookie.getDomain()); System.out.println("Path: " + cookie.getPath()); System.out.println("Max-Age: " + cookie.getMaxAge()); System.out.println("Secure: " + cookie.getSecure()); System.out.println("HttpOnly: " + cookie.isHttpOnly()); }); }); } } } ``` 通过获取请求头中的`Cookie`头部信息,然后使用`HttpCookie.parse()`方法将其解析为`List<HttpCookie>`对象。然后遍历该列表以获取每个Cookie对象的属性。 请注意,以上示例是使用Spring WebFlux框架的示例。在其他框架或库中,可能会有一些差异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值