- 假如 http://www.cart.mall.com/addToCart api 这样写
当在浏览器中多次刷地址 http://www.cart.mall.com/addToCart?skuId=1&num=1 ,就会不断地向购物车中假如商品。为了避免这种情况,可以使用重定向。@Controller public class CartController { @GetMapping("/addToCart") public String addToCart(@RequestParam("skuId") Long skuId, @RequestParam("num") Integer num, RedirectAttributes ra) throws ExecutionException, InterruptedException { // 添加成功,跳转到success页面 cartService.addToCart(skuId, num); model.addAttribute("item", cartItem); return "success"; } }
- 使用重定向技术,接口防刷
当在浏览器地址栏中输入 http://www.cart.mall.com/addToCart?skuId=1&num=1 点回车后,该商品会假如购物车,然后,利用重定向技术,浏览器地址栏中 url变为 http://www.cart.mall.com/addToCartSuccess.html?skuId=1,这样就避免了多次刷地址 http://www.cart.mall.com/addToCart?skuId=1&num=1的问题。@Controller public class CartController { @GetMapping("/addToCart") public String addToCart(@RequestParam("skuId") Long skuId, @RequestParam("num") Integer num, RedirectAttributes ra) throws ExecutionException, InterruptedException { // 添加成功,跳转到success页面 cartService.addToCart(skuId, num); // 将skuId放在model中,重定向的时候,会拼在url后面 // 放在model中,本质是放在request作用域名,只对当前请求有效 // redirectAttributes可以重定向携带数据 ra.addAttribute("skuId", skuId); return "redirect:http://www.cart.mall.com/addToCartSuccess.html"; } /** * 为了防止重复添加,就是多次刷新购物车结果页面, * 重复添加商品,那么将商品添加成功后,重定向到结果页面 * 这里拿到skuId后,去重新查一下购物车 * 跳转到成功页面 */ @GetMapping("/addToCartSuccess.html") public String addToCartSuccessPage(@RequestParam("skuId") Long skuId, Model model) { // 重定向成功页面,再次查询购物车即可 CartItem cartItem = cartService.getCartItem(skuId); model.addAttribute("item", cartItem); return "success"; } }
将商品添加到购物车【小技巧】
最新推荐文章于 2024-05-25 17:33:32 发布