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中
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.