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

加入购物车:

查询购物车:

问题完美解决。

时间: 2024-08-13 20:25:06

Java 读取不到Cookie中的数据的相关文章

Java读取excel指定sheet中的各行数据,存入二维数组,包括首行,并打印

1. 读取 //读取excel指定sheet中的各行数据,存入二维数组,包括首行 public static String[][] getSheetData(XSSFSheet sheet) throws IOException { String[][] testArray = new String[sheet.getPhysicalNumberOfRows()][]; for(int rowId =0;rowId<sheet.getPhysicalNumberOfRows();rowId++)

POI 读取Excel文档中的数据——兼容Excel2003和Excel2007

Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. HSSF - 提供读写Microsoft Excel格式档案的功能. XSSF - 提供读写Microsoft OOXML格式档案的功能.  以下是项目工程结构图: 使用POI解析EXCEL文件需要用到POI相关的jar包,这些jar包可以在apache官网上去下载:http://poi.apache.org/download.html: 这里我使

MapReduce 读取和操作HBase中的数据

MapReduce 中如何处理HBase中的数据?如何读取HBase数据给Map?如何将结果存储到HBase中? 2012-07-05 13:40 89人阅读 评论(0) 收藏 举报 MapReduce 中如何处理HBase中的数据?如何读取HBase数据给Map?如何将结果存储到HBase中? Mapper类:包括一个内部类(Context)和四个方法(setup,map,cleanup,run):          setup,cleanup用于管理Mapper生命周期中的资源.setup

C#跨进程读取listview控件中的数据

http://www.cnblogs.com/Charltsing/p/slv32.html 欢迎交流:QQ564955427 读取标准的32位listview控件中的数据,网上已经有很多代码了.今天有空也做了个测试.读取TcpEye软件中的数据. 具体见程序附件.  下载(本程序可以自己修改主窗体类名和子窗体类名,抓取其他的软件数据.当然,窗体层次必须是2层,而且不能有多个同类名的子窗体,因为这只是个示例程序) *****************************************

Java 读取application.properties配置文件中配置

实际开发中若需要读取配置文件application.properties中的配置,代码如下.例:读取配置文件中name属性配置值: 代码如下: import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.core.io.support.PropertiesLoaderUtils; import java.u

Java程序在向mysql中插入数据的时候出现乱码

今天在往数据库中插入数据的时候中文字符在数据库中就出现了乱码?网上有各种说法,但是适合我的,最终解决我的问题的只有下面一种! 在创建数据库的时候,注意设置编码方式. CREATE DATABASE `database` CHARACTER SET 'utf8 ' COLLATE 'utf8_general_ci '; 在建表的时候,注意设置编码方式. CREATE TABLE `table1` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `name` char

Java 读取Excel格式xls、xlsx数据工具类

需要POI的jar包支持 调用方式: ReadExcelTest excelTest = new ReadExcelTest(); excelTest.readExcel("D:\\data1.xlsx"); package com.util; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; imp

java实现将oracle表中的数据导出到excel表里

1.数据库连接类:Dbutil package sql2excel; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; public class Dbutil { /* * 功能

在服务端中,读取properties资源文件中的数据

1.获取到资源的路径 2.读取数据 //properties文件对象 Properties properties = new Properties(); //通过HttpServletRequest request 对象 获取服务上下文环境中目标文件的真实路径 String realPath = request.getServletContext().getRealPath("/deom.properties"); //加载目标文件的数据 properties.load(new Fil