商城项目的购物车模块的实现------通过session实现
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实现的更多相关文章
- django 商城项目之购物车以及python中的一些redis命令
最近在用django restframe框架做一个商城项目,有一个关于购物车的业务逻辑,是用cookie和redis存储的购物车信息,在这里记录一下. 完成一个商城项目,如果不做一个购物车,就是十分可 ...
- DRF 商城项目 - 购物( 购物车, 订单, 支付 )逻辑梳理
购物车 购物车模型 购物车中的数据不应该重复. 即对相同商品的增加应该是对购买数量的处理而不是增加一条记录 因此对此进行联合唯一索引, 但是也因此存在一些问题 class ShoppingCart(m ...
- python框架Django实战商城项目之用户模块创建
创建用户APP 整个项目会存在多个应用,需要存放在一个单独的文件包了,所以新建一个apps目录,管理所有子应用. 在apps包目录下穿件users应用 python ../../manage.py s ...
- Mvp快速搭建商城购物车模块
代码地址如下:http://www.demodashi.com/demo/12834.html 前言: 说到MVP的时候其实大家都不陌生,但是涉及到实际项目中使用,还是有些无从下手.因此这里小编带着大 ...
- 用JSP实现的商城购物车模块
这两天,在学习JSP,正好找个小模块来练练手: 下面就是实现购物车模块的页面效果截图: 图1. 产品显示页面 通过此页面进行产品选择,增加到购物车 图2 .购物车页面 图3 . 商品数量设置 好了,先 ...
- python-django框架-电商项目-购物车模块开发_20191125
python-django框架-电商项目-购物车模块开发 商品详情页js代码: 在商品详情页,有加入购物车按钮, 点击加减号可以增加减少,手动输入也可以, 点击加入购物车,就要加过去, 先实现加减的操 ...
- mmall商城购物车模块总结
购物车模块的设计思想 购物车的实现方式有很多,但是最常见的就三种:Cookie,Session,数据库.三种方法各有优劣,适合的场景各不相同.Cookie方法:通过把购物车中的商品数据写入Cookie ...
- ThinkPHP3.2开发仿京东商城项目实战视频教程
ThinkPHP3.2仿京东商城视频教程实战课程,ThinkPHP3.2开发大型商城项目实战视频 第一天 1.项目说明 2.时间插件.XSS过滤.在线编辑器使用 3.商品的删除 4.商品的修改完成-一 ...
- Vue nodejs商城项目-项目概述
项目概况 用vue2.0 +node.js +MongonDB 做了一个商城系统 技术选型 Vue2.0+node.js+express+MongoDB+axios+vuex 构建工具 Webpack ...
随机推荐
- 2021中国能源网络信息安全大赛wp
FROM TEAM BINX Web ezphp CODE 将base64解了之后得到: $O0O000="rFqQmguebyiVTBwlWAJYRhsHXfpojxEndNGkZICDL ...
- Python基础(定制类)
文章转载自廖雪峰老师Python课程博客,仅供学习参考使用看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的. __slots__我们已经知道 ...
- Linux常见目录结构
目录 描述 /home 包含Linux系统上各用户的主目录,子目录默认以该用户名命名 /etc 包含Linux系统上大部分的配置文件,建议修改配置文件之前先备份 /var 该目录存放不经常变化的数据, ...
- vue3 学习笔记 (二)——axios 的使用有变化吗?
本篇文章主要目的就是想告诉我身边,正在学 vue3 或者 准备学 vue3 的同学,vue3中网络请求axios该如何使用,防止接触了一点点 vue3 的同学会有个疑问?生命周期.router .vu ...
- MySQL语法练习一
DESC t_dept ALTER TABLE t_dept ADD descri VARCHAR(20) ALTER TABLE t_dept ADD decribe VARCHAR(20) FIR ...
- [atARC125F]Tree Degree Subset Sum
令$a_{i}$为$i$的度数-1,那么$(x,s)$合法即等价于存在$S\subseteq [1,n],|S|=x$且$\sum_{k\in S}a_{k}=s$ 引理:$(x,s)$合法的必要条件 ...
- 洛谷 P7078 - [CSP-S2020] 贪吃蛇(贪心)
题面传送门 题意: 有 \(n\) 条蛇,每条蛇有个实力 \(a_i\) 我们称编号为 \(x\) 的蛇比编号为 \(y\) 的蛇强,当且仅当 \(a_x>a_y\) 或 \(a_x=a_y\) ...
- C++ and OO Num. Comp. Sci. Eng. - Part 3.
2. Expressions and Statements 声明是将一个种类型的变量引入程序的语句. 作用域 作用域又一对花括号限定,在所有花括号之外的为全局作用域. 在作用域内声明的变量为局部变量. ...
- MYSQL5.8----M3
333333333333333333333333333 mysql> DESC user; +----------+---------------------+------+-----+---- ...
- 毕业设计之zabbix之nginx状态监控
监控脚本: [root@webone.quan.bbs ~]$vim /usr/local/zabbix/script/ngx_status.sh #!/bin/bash##************* ...