码迷,mamicode.com
首页 > 编程语言 > 详细

Java 读取不到Cookie中的数据

时间:2017-04-01 16:56:44      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:blog   原因   字符   特殊字符   数据库   property   ges   生成   购物   

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

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中的数据

标签:blog   原因   字符   特殊字符   数据库   property   ges   生成   购物   

原文地址:http://www.cnblogs.com/dyl-sunny/p/6656571.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!