public void addCart(HttpServletRequest request, HttpServletResponse response, Long skuId, Integer quantity) {
//获取所有cookies
Cookie[] cookies = request.getCookies();
//获取配置文件中的购物车名称
String cartName = ECPSUtils.readProp("cart_name");
//json数据转换配置
JsonConfig jsonConfig = new JsonConfig();
//指定要转换的类
jsonConfig.setRootClass(EbCart.class);
//指定要转换的类中,排除转换的属性
jsonConfig.setExcludes(new String[]{"stu"});
//商品信息
List<EbCart> carts = new ArrayList<EbCart>();
//查询购物车是否已经存在商品
if(cookies != null && cookies.length > 0){
for (Cookie cookie : cookies) {
//如果用户的请求已经包含了购物名称,说明已经存在了购物车
if(StringUtils.equals(cartName, cookie.getName())){
//购物车信息,并将购物 信息进行编码转换
String cartInfo = cookie.getValue();
cartInfo = URLDecoder.decode(cartInfo);
//将购物车信息转换为json数组
JSONArray jsonArray = JSONArray.fromObject(cartInfo);
//通过JSONSerializer 将json数组转换为java集合
JSONSerializer jsonSerializer = new JSONSerializer();
carts = (List<EbCart>) jsonSerializer.toJava(jsonArray, jsonConfig);
//设置标志
boolean isExists = false;
//循环查询要添加的商品是否已经存在,
if(carts.size() > 0){
for (EbCart cart : carts) {
//如果已经存在,则结束循环,并在已经存在的商品中加上本次购买的数量(注意:这里对比时如果不使用longValue方法,就要使用equals来比较)
if(cart.getSkuId().longValue() == skuId.longValue()){
cart.setQuantity(cart.getQuantity()+quantity);
isExists = true;
break;
}
}
}
//如果要购买的商品在购物 车不存在,则将此商品加入到商品列表中
if(!isExists){
EbCart cart = new EbCart();
cart.setSkuId(skuId);
cart.setQuantity(quantity);
carts.add(cart);
}
}
}
}else{
//如果购物车不存在,则将要购物的商品放入到商品列表中
EbCart cart = new EbCart();
cart.setSkuId(skuId);
cart.setQuantity(quantity);
carts.add(cart);
}
//将JAVA集合转换为json数组
JSONArray jsonArray = JSONArray.fromObject(carts);
// jsonArray.add(carts);
//将java数组转换为字符串,并重新编码
String result = jsonArray.toString();
result = URLDecoder.decode(result);
//创建cookie,将购物车信息放入进去。
Cookie cookie = new Cookie(cartName, result);
//设置cookie 的有效期
cookie.setMaxAge(Integer.MAX_VALUE);
//设置cookie的作用域
cookie.setPath("/");
//将cookie写入到用户的浏览器中
response.addCookie(cookie);
}
JSON类型数据转换为对象,并排除指定的属性.JAVA将购物车数据写入到cookie中
最新推荐文章于 2023-08-16 16:35:31 发布