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即可。

加入购物车:

查询购物车:

问题完美解决。

 

posted @ 2017-04-01 16:40  小手儿冰凉  阅读(2487)  评论(0编辑  收藏  举报