商城项目购物车的实现

目录

  • 一,新建购物车的实体类Cart
  • 二,在选择商品类型页面进行页面跳转
  • 三,在controller进行添加商品对象并记入session
  • 四,购物车页面接收购物车信息并展示
  • 五,补充说明

@(商城项目购物车的实现)
首先是springboot和thymeleaf整合的demo项目,然后使用session实现购物车

一,新建购物车的实体类Cart

public class Cart implements java.io.Serializable{
    private Shangpin shangpin;//存放商品实体类的
    private Integer number;//商品数量
    //setter和getter方法省略

二,在选择商品类型页面进行页面跳转

         //购物车,把id参数传到后台controller
        function shoppingCar() {
            var id=$("#baga").val();
            var color=$("#hiddenColor").val();
            var size=$("#hiddenSize").val();
             location.href="/demo/shoppingCart?id="+id+"&color="+color+"&size="+size;
        }

三,在controller进行添加商品对象并记入session

 /**
     * 添加到购物车
     */
@RequestMapping("/shoppingCart")
    public String shoppingCart(Integer id,HttpSession session,String color,String size){
    Integer ids=Integer.valueOf(id);
    //根据id获取商品对象
    List<Map> list=selectService.spMessage(ids);
    System.err.println("商品列表:"+list);
    Shangpin shangpin=new Shangpin();
    shangpin.setPicpath((String) list.get(0).get("picpath"));
    shangpin.setColor(color);
    shangpin.setSize(size);
    shangpin.setName((String)list.get(0).get("name"));
    shangpin.setPrice((Double) list.get(0).get("price"));
    shangpin.setId((Integer) list.get(0).get("id"));
    //获取购物车
    Map<Integer, Cart> cartMap=(Map<Integer, Cart>)session.getAttribute("cartMap");
    //第一次添加商品到购物车
    if(cartMap==null){
        cartMap=new HashMap<Integer, Cart>();//实例化map对象
        //实例化购物车对象
        Cart cart=new Cart();
        cart.setShangpin(shangpin);
        cart.setNumber(1);
        //保存商品对象到map集合中
        cartMap.put(id,cart);
    }else{//第一次以后的操作
        Cart cart=cartMap.get("id");//根据商品id,获取购物车实体类
        if(cart!=null){//存在相同的商品
            cart.setNumber(cart.getNumber()+1);

        }else{
            cart=new Cart();
            cart.setShangpin(shangpin);
            cart.setNumber(1);
            cartMap.put(id,cart);
        }
    }
    //然后保存到session中
    session.setAttribute("cartMap",cartMap);
    return "forward:getShoppingCar";
}
/**
 * 从session中取出购物车信息,并转发到购物车页面展示商品信息
 */
@RequestMapping("getShoppingCar")
    public String getShoppingCar(HttpSession session,Model model){
    Map<Integer,Cart> cartMap =(Map<Integer,Cart>)session.getAttribute("cartMap");
    model.addAttribute("carList",cartMap);
    return "udai_shopcart";
}

四,购物车页面接收购物车信息并展示

<table class="table table-bordered">
                        <thead>
                            <tr>
                                <th width="150">
                                    <label class="checked-label"><input type="checkbox" class="check-all"><i></i> 全选</label>
                                </th>
                                <th width="300">商品信息</th>
                                <th width="150">单价</th>
                                <th width="200">数量</th>
                                <th width="200">现价</th>
                                <th width="80">操作</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr th:each="list:${carList}">
                                <th scope="row">
                                    <label class="checked-label"><input type="checkbox"><i></i>
                                        <div class="img">![在这里插入图片描述]()</div>
                                    </label>
                                </th>
                                <td>
                                    <div class="name ep3" th:text="${list.value.shangpin.name}"></div>
                                    颜色分类:<div th:text="${list.value.shangpin.color}"></div>尺码:<div th:text="${list.value.shangpin.size}"></div>
                                </td>
                                <td th:text="${list.value.shangpin.price}">¥20.0</td>
                                <td>
                                    <div class="cart-num__box">
                                        <input type="button" class="sub" value="-">
                                        <input type="text" class="val" value="1" maxlength="2">
                                        <input type="button" class="add" value="+">
                                    </div>
                                </td>
                                <td th:text="${list.value.shangpin.price}"></td>
                                //这里删除按钮可获得对应的id,具体删除就是删除对应session中的键值对就可以了。
                                <td><a th:onclick="caonima([[${list.value.shangpin.id}]])">删除</a></td>
                            </tr>
                        </tbody>
                    </table>

五,补充说明

因为购物车信息存储的是键值对,并且值是以对象的形式存储的,所以,使用thymeleaf遍历数组取数据的时候需要这样才能取出对应的数据。

<div class="name ep3" th:text="${list.value.shangpin.name}"></div>

如果使用的是jsp和c标签的话,只需要如下即可。

<td>${list.value.shangpin.name}</td>

效果如图

上面是购物车的基本操作,有问题欢迎留言!

原文地址:https://www.cnblogs.com/fantongxue/p/12443351.html

时间: 2024-10-06 04:03:57

商城项目购物车的实现的相关文章

我的工作生涯中关于项目的需求和功能分析(商城项目)

时隔一年左右,我又来啦! 这次是一个商城项目,还是照例分为三个栏目,项目需求,需求解析和需求实现. 不具体到技术细节,只谈论如何实现,以及如何以更好的方式实现. 项目需求: 首先,需求就是一个商城,有分类,有商品,有购物车,有优惠券,有拼团和众筹,有订单管理的商城系统. 但是,这个商城有一个不太一般的功能,就是分销商功能. 分销商的功能有很多,也可以管理商品,但是分销商上传的商品需要运营人员审核后才可以上架,筛选购买总店的商品,分类和专题商品, 同时分销商还可以返佣和店铺折扣,也就是在分销商的店

2018-8-6对美多商城项目的总结

2018-8-6对美多商城项目的总结 美多商城商业模式: C2B模式(消费者到企业的商业模式),相类似网站包括:京东,淘宝,海尔商城,尚品宅配等. 商城需求分析 1,用户部分 2,商品部分 3,购物车部分 4,商品订单备份 5,用户支付部分 6,上线程序的配置 用户部分模块: 基本功能:用户注册,登录,密码的重置,第三方登录 用户注册 1,图片验证码 流程分析: 1,前端生成uuid随机字符串 2,后端生成图片验证码发送给前端,将图形验证码的存入到redis中 2,短信验证码 1,检查图片的验证

商城项目开发(一)

一.功能的演示 1.用户模块 用户注册功能 发送邮件 激活用户 表单的校验 用户的登录功能 自动登录 用户的注销功能 2.商品模块 首页热门商品和最新商品功能 商品分类 商品的列表(分页) 商品详细信息 浏览记录功能 3.购物车模块 将商品加入购物车 展示购物车功能 4.订单模块(多表和事务) 提交订单 展示订单 在线支付 5.后台的分类的模块 分类信息的增删改查 6.后台的商品模块 商品的信息的增删改查(文件上传) 7.后台的订单的模块 所有的订单的信息展示 二.一般项目开发流程(公司之间是有

美多商城项目总结

注册 一般来说,注册模块并没有什么难点,但我在注册模块中写了两种验证码(普通验证码,短信验证码),普通验证码没有难度,但手机验证码需要在twilio网获取免费手机号,通过这个手机号给注册用户发短信验证码. 作用: 注册验证逻辑 短信+邮件+验证码 防止机器人重复注册 登录 我的登陆模块写了第三方登录,因为大多数网站都有第三方登陆,并且第三方登录可以省许多时间,比较方便. 关于三方登录的授权机制 在授权过程中大致有三个对象.一个是服务提供方(第三方网站).一个是用户(将资源放在服务提供方存放的对象

【SSH网上商城项目实战27】域名空间的申请和项目的部署及发布

前面陆陆续续的完成了网上商城的一些基本功能,虽然还有很多地方有待完善,但是不影响项目的部署和发布,我们可以先来玩一把,这一节主要介绍下域名空间的申请以及项目的部署和发布流程. 1. 域名空间的申请 作为一个伟大的屌丝,肯定没钱买域名空间,很自然的想到去申请个免费的,现在免费的域名空间也很多,我在福佳jsp技术网上申请了一个试用期是15天的,大家也可以去申请个玩玩,反正作为学习,这已经足够了,当然,如果要长期的肯定要付费的.注册过程我截几个图,如下: 然后下一步,最后开通如下: 建议把上面这些信息

“商城项目”自定义搜索框

1.要实现搜索的效果图如下:<功能:当输入关键字点击搜索按钮的时候在list上显示出来,点击商品进入商品详情页即可> 2>自定义搜索框,在导航栏视图上添加搜索视图,代码如下: 3>搜索结果的tableView,定义一个数组将解析数据的内容存取到数组中,将数组的个数加一,最后多得一行作为清除历史记录的一行 4>重要的一点就是:点击清除历史记录的时候,将保存到NSuserdefault的内容remove掉 5>最后将数据解析的内容传过去就行了,自定义搜索框就完成了. 注意点

【SSH网上商城项目实战16】Hibernate的二级缓存处理首页的热门显示

网上商城首页都有热门商品,那么这些商品的点击率是很高的,当用户点击某个热门商品后需要进入商品的详细信息页面,就像淘宝里面那样.那么每次点击都要去后台查询一下该商品的详细信息,就会发送相应的sql语句,每次刷新一下详细页面也会发sql语句,这样的话,性能肯定会受到很大的影响.那么使用Hibernate的二级缓存就可以解决这个问题. 有些人可能会想,我们可以使用重定向,这样的话,在用户第一次访问的时候把信息查出来放到session中,以后每次用户刷新就可以去session中拿了,这样就不用去数据库中

新巴巴运动网上商城 项目 快速搭建 教程 The new babar sports online mall project quickly builds a tutorial

新巴巴运动网上商城 项目 快速搭建 教程 The new babar sports online mall project quickly builds a tutorial 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:[email protected] E-mail: 313134555 @qq.com 搭建后台网站.启动 console 服务器 ,它的http 端口 是 8150 Build a background site.Start the console s

商城项目实战 | 1.1 Android 仿京东商城底部布局的选择效果 —— Selector 选择器的实现

前言 本文为菜鸟窝作者刘婷的连载."商城项目实战"系列来聊聊仿"京东淘宝的购物商城"如何实现. 京东商城的底部布局的选择效果看上去很复杂,其实很简单,这主要是要感谢 selector 选择器,本文将讲解仿照京东商城的底部布局的选择效果,如何实现 selector 选择器,在不同的状态下,给 view 设置不同的背景.京东商城底部布局的选择效果如下. View主要的几种状态 主要状态有8种,设置状态的代码以及相应的含义如下. 1 1. android:state_pr