Java 读取不到Cookie中的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 读取不到Cookie中的数据相关的知识,希望对你有一定的参考价值。

电商项目购物车模块,要求用户在非登录情况下也可将商品加入购物车,因此设计如下:

1.如果添加购物车时,用户已经登录,则将购物车数据储存到redis和数据库中,而且数据要保持一致,用户查询时从redis中获取;

2.如果添加购物车时,用户未登录,则将购物车数据添加到cookie中,查询、修改和删除也在cookie中进行;如果用户登录成功,则通知将cookie中的购物车数据持久化到数据库和redis中。

用户未登录时,将购物车加入cookie,代码如下:

技术分享此处的cookieKey生成规则是:GoodsCart_goodsId_property,其中property为propertyId:propertyValueId,多个之间以“_”相连,例如 1:23_2:24_3:25。

从cookie中查询购物车信息,代码如下:

技术分享

但是,查询出来的cookie数组中只有一个cookie,即JSESSSIONID,并没有我存进去的购物车信息,然后在浏览器中查看cookie,发现已经存在,但是就是读取不出来。

解决方案:

经过排查,是因为cookie的特殊字符的原因,“:”是cookie中特殊字符,索引从cookie中读取时出现解析错误;

一个较好的解决办法就是:在将cookie值写入客户端浏览器之前,首先进行URLEncode编码,读取cookie时,进行URLDecode即可。

加入购物车:

技术分享

查询购物车:

技术分享

问题完美解决。

 

以上是关于Java 读取不到Cookie中的数据的主要内容,如果未能解决你的问题,请参考以下文章

java代码如何读取到浏览器中的cookie值

有没有办法从 Java 中的响应对象中读取 cookie?

Java中的Cookie的意思、用途!

怎么用java获取cookie

.net读取cookie中的值

java 怎么把token放进cookie