cookie来实现购物车功能
2018-08-21 05:31:46来源:博客园 阅读 ()
一、大概思路
1、从cookie中取商品列表
2、判断要添加的商品是否存在cookie中。
3、如果已添加过,则把对应的商品取出来,把要添加的商品的数量加上去。
4、如果没有添加过,则把改商品添加到商品列表中。
5、再把商品列表序列化,加入cookie中。
二、代码实现
1、定义一个购物车商品的pojo
public class CartItem { private Long id; private String title; private Long price; private Integer num; private String image; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public Long getPrice() { return price; } public void setPrice(Long price) { this.price = price; } public Integer getNum() { return num; } public void setNum(Integer num) { this.num = num; } public String getImage() { return image; } public void setImage(String image) { this.image = image; } }
2、定义一个购物车的接口和实现类
public interface CartService { TaotaoResult addCartService(HttpServletRequest request, HttpServletResponse response, Long itemId, Integer num); }
@Service public class CartServiceImpl implements CartService { @Autowired private ItemService itemService; @Value("${COOKIE_EXPIRE}") private Integer COOKIE_EXPIRE; @Override public TaotaoResult addCartService(HttpServletRequest request, HttpServletResponse response, Long itemId, Integer num) { // 1.从cookie中取商品列表 List<CartItem> list = getCartFromCookie(request); // 2.判断是否已经添加过购物车 boolean haveflag = false; for (CartItem c : list) { //3.如果添加过,把对应的商品取出来,数量加Num if(c.getId().longValue() == itemId) { c.setNum(c.getNum() + num); haveflag = true; break; } } // 4.如果没添加过,则把该商品添加进去。 if (!haveflag) { TbItem item = itemService.getItemById(itemId); CartItem cartItem = new CartItem(); cartItem.setNum(num); cartItem.setId(itemId); cartItem.setPrice(item.getPrice()); cartItem.setTitle(item.getTitle()); if (item.getImage() != null) { String image = item.getImage(); String[] strings = image.split(","); cartItem.setImage(strings[0]); } list.add(cartItem); } // 5.再把list返回到cookie中 CookieUtils.setCookie(request, response, "TT_CART", JsonUtils.objectToJson(list), COOKIE_EXPIRE);
return TaotaoResult.ok(); } private List<CartItem> getCartFromCookie(HttpServletRequest request) { try { String json = CookieUtils.getCookieValue(request, "TT_TOKEN", true); List<CartItem> list = JsonUtils.jsonToList(json, CartItem.class); if (list == null) { return new ArrayList<>(); }else { return list; } }catch (Exception e) { return new ArrayList<>(); } } }
3、controller来接收前端的请求,并响应到cart-success.jsp页面。
@Controller public class CartController { @Autowired private CartService cartService; @RequestMapping("/cart/add/{itemId}") public String addCart(@PathVariable Long itemId, Integer num, HttpServletRequest request, HttpServletResponse response) { TaotaoResult result = cartService.addCartService(request, response, itemId, num); return "cart-success"; } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- DES/3DES/AES 三种对称加密算法实现 2020-06-11
- SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后 2020-06-10
- Spring Boot 实现定时任务的 4 种方式 2020-06-10
- JSP+SSH+Mysql+DBCP实现的租车系统 2020-06-09
- Java实现的三种字符串反转 2020-06-09
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash