1.新建购物车的实体类Cart

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

2.在选择商品类型页面进行页面跳转

 function shoppingCar() {
var id=$("#baga").val();
var color=$("#hiddenColor").val();
var size=$("#hiddenSize").val();
location.href="/demo/shoppingCart?id="+id+"&color="+color+"&size="+size;
}

3.在controlelr进行添加商品对象并计入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);
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";
}

 4.从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";
}

5.页面显示

<table class="table table-bordere">
<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>

  

 

商城项目的购物车模块的实现------通过session实现的更多相关文章

  1. django 商城项目之购物车以及python中的一些redis命令

    最近在用django restframe框架做一个商城项目,有一个关于购物车的业务逻辑,是用cookie和redis存储的购物车信息,在这里记录一下. 完成一个商城项目,如果不做一个购物车,就是十分可 ...

  2. DRF 商城项目 - 购物( 购物车, 订单, 支付 )逻辑梳理

    购物车 购物车模型 购物车中的数据不应该重复. 即对相同商品的增加应该是对购买数量的处理而不是增加一条记录 因此对此进行联合唯一索引, 但是也因此存在一些问题 class ShoppingCart(m ...

  3. python框架Django实战商城项目之用户模块创建

    创建用户APP 整个项目会存在多个应用,需要存放在一个单独的文件包了,所以新建一个apps目录,管理所有子应用. 在apps包目录下穿件users应用 python ../../manage.py s ...

  4. Mvp快速搭建商城购物车模块

    代码地址如下:http://www.demodashi.com/demo/12834.html 前言: 说到MVP的时候其实大家都不陌生,但是涉及到实际项目中使用,还是有些无从下手.因此这里小编带着大 ...

  5. 用JSP实现的商城购物车模块

    这两天,在学习JSP,正好找个小模块来练练手: 下面就是实现购物车模块的页面效果截图: 图1. 产品显示页面 通过此页面进行产品选择,增加到购物车 图2 .购物车页面 图3 . 商品数量设置 好了,先 ...

  6. python-django框架-电商项目-购物车模块开发_20191125

    python-django框架-电商项目-购物车模块开发 商品详情页js代码: 在商品详情页,有加入购物车按钮, 点击加减号可以增加减少,手动输入也可以, 点击加入购物车,就要加过去, 先实现加减的操 ...

  7. mmall商城购物车模块总结

    购物车模块的设计思想 购物车的实现方式有很多,但是最常见的就三种:Cookie,Session,数据库.三种方法各有优劣,适合的场景各不相同.Cookie方法:通过把购物车中的商品数据写入Cookie ...

  8. ThinkPHP3.2开发仿京东商城项目实战视频教程

    ThinkPHP3.2仿京东商城视频教程实战课程,ThinkPHP3.2开发大型商城项目实战视频 第一天 1.项目说明 2.时间插件.XSS过滤.在线编辑器使用 3.商品的删除 4.商品的修改完成-一 ...

  9. Vue nodejs商城项目-项目概述

    项目概况 用vue2.0 +node.js +MongonDB 做了一个商城系统 技术选型 Vue2.0+node.js+express+MongoDB+axios+vuex 构建工具 Webpack ...

随机推荐

  1. 第九届网安竞赛writeup

    web easysql[已解决] uname=a') union select 1,extractvalue(1, concat(0x7e, (select database()),0x7e))#&a ...

  2. install virtualenv without sudo

    用普通用户安装virtualenv Perhaps this was valid for older versions of virtualenv. For now, if you want to r ...

  3. [Vue]浅谈Vue3组合式API带来的好处以及选项API的坏处

    前言 如果是经验不够多的同志在学习Vue的时候,在最开始会接触到Vue传统的方式(选项式API),后边会接触到Vue3的新方式 -- 组合式API.相信会有不少同志会陷入迷茫,因为我第一次听到新的名词 ...

  4. [bzoj5418]屠龙勇士

    很显然,每一步所选的剑和怪物都是确定的,可以先求出来(不用写平衡树,直接用multiset即可,注意删除要删指针,以下假设第i次攻击用ki攻击的剑,攻击第i只怪)  首先判断无解,即如果存在ai使得g ...

  5. 在安卓开发中需要格式化桌面icon图标

    使用以下在线工具即可实现http://www.makeicon.cc/home/index

  6. 【CSS】水平居中和垂直居中

    水平居中和垂直居中 2019-11-12  15:35:37  by冲冲 1.水平居中 (1)父级元素是行内元素,子级元素是行内元素,子级元素水平居中 ① 设置父级元素为块级元素 display:bl ...

  7. maven私服-配置本地私服环境之jar包下载环境搭建

    我们前面已经搭建好环境了,就是maven里没有代码,如何导入jar包管理jar包 maven-public仓库组:已有 maven-central代理仓库:从直接代理maven中央仓库,修改为代理阿里 ...

  8. 前台json遍历拼装

    //添加角色. $.ajax({ type: "post", url: "/sysRole/list", data: {page: 1, limit: 1000 ...

  9. git新手配置(ios环境)

    ios环境,初步了解git是个什么东西,使用过svn相关软件最佳,否则可以先补一下git的相关概念和用处,相关教程:https://www.liaoxuefeng.com/wiki/896043488 ...

  10. Python+selenium之弹窗