Springboot商城购物车防刷新时自动添加数量

Posted lovoo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Springboot商城购物车防刷新时自动添加数量相关的知识,希望对你有一定的参考价值。

前言

在很多购物商城中,都有购物车功能,用户在选择产品页将产品添加到购物车后,会执行一个添加到购物车的功能,同时将结果展示到出来,如果不做处理,此时的浏览器地址将会如此显示为如:http://cart.mall.com/addToCart?skuId=27&num=3这样的地址。如果用户不断地刷新页面,将不断地执行添加到购物车,造成数据不准确,如何解决这个问题,我们可以采用redirect跳转的方式。
在这里插入图片描述

首先,执行添加到购物车方法,然后再执行跳转到购物车页面方法,在跳转到购物车页面的方法中,再次查询一次购物车数据,这样浏览器就不会显示上述地址而变成:http://cart.mall.com/addToCartSuccess.html?skuId=28。也就是说要分两个方法,第一个是方法添加购物车,另一个方法是查询购物车。

具体代码:

   /**
     * 第一步,添加购物车
     * 添加商品到购物车
     * 防刷新添加购物车数据,重定向到addToCartSuccess.html
     * 然后再查数据
     * @return
     */
    @GetMapping("/addToCart")
    public String addToCart(@RequestParam("skuId") Long skuId, @RequestParam("num") Integer num, RedirectAttributes model) throws ExecutionException, InterruptedException {
        CartItem item = cartService.addToCart(skuId, num);
//        model.addAttribute("item", item);
        model.addAttribute("skuId", skuId);
        return "redirect:http://cart.mall.com/addToCartSuccess.html";
    }

    /**
     * 第二步,查询购物车
     * @param skuId
     * @param model
     * @return
     */
    @GetMapping("/addToCartSuccess.html")
    public String addToCartSuccess(@RequestParam("skuId") Long skuId, Model model){
        CartItem item = cartService.getCartItem(skuId);
        model.addAttribute("item", item);
        return "success";
    }

以上是关于Springboot商城购物车防刷新时自动添加数量的主要内容,如果未能解决你的问题,请参考以下文章

基于springboot电商生鲜购物商城平台设计与实现(含源码+数据库文件)

SSM商城项目

小程序业务操作之小商城实现

购物车刷新策略

网上商城6--购物模块

商城项目购物车的实现