IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 购物车功能 -> 正文阅读

[大数据]购物车功能

实现购物的三种方式:

分析:
1.session保存购物车信息到session(服务端)
思路:

①.点击我的购物车,查询后台的session,通过用户账号去找

②.如果有那就显示商品,没有则不显示

③.添加购物车,将数据加入两个地方:前台HTML显示,后台的session

? ? ? ? 通过userid进行保存session内容

④.清空购物车,清空session

? ? ? ? 注意:所有购物车相关的操作应该先登录

2.cookie保存购物车(效率要更高、客户端、不安全)
3.数据库

一.加入购物车

①.建购物车实体类

package vo;

public class ShoppingVo {
//  购物车列表订单项所需数据
  private String name;
  private float price;
  private int num;
  private float total;

//  提交订单所需数据
  private String consignee;
  private String phone;
  private String postalcode;
  private String address;
  private int sendType;

//  页面的所有传参字符串
  private String pageStr;

public String getName() {
	return name;
}

public void setName(String name) {
	this.name = name;
}

public float getPrice() {
	return price;
}

public void setPrice(float price) {
	this.price = price;
}

public int getNum() {
	return num;
}

public void setNum(int num) {
	this.num = num;
}

public float getTotal() {
	return total;
}

public void setTotal(float total) {
	this.total = total;
}

public String getConsignee() {
	return consignee;
}

public void setConsignee(String consignee) {
	this.consignee = consignee;
}

public String getPhone() {
	return phone;
}

public void setPhone(String phone) {
	this.phone = phone;
}

public String getPostalcode() {
	return postalcode;
}

public void setPostalcode(String postalcode) {
	this.postalcode = postalcode;
}

public String getAddress() {
	return address;
}

public void setAddress(String address) {
	this.address = address;
}

public int getSendType() {
	return sendType;
}

public void setSendType(int sendType) {
	this.sendType = sendType;
}

public String getPageStr() {
	return pageStr;
}

public void setPageStr(String pageStr) {
	this.pageStr = pageStr;
}
  public ShoppingVo() {
	// TODO Auto-generated constructor stub
}

public ShoppingVo(String name, float price, int num, float total, String consignee, String phone, String postalcode,
		String address, int sendType, String pageStr) {
	super();
	this.name = name;
	this.price = price;
	this.num = num;
	this.total = total;
	this.consignee = consignee;
	this.phone = phone;
	this.postalcode = postalcode;
	this.address = address;
	this.sendType = sendType;
	this.pageStr = pageStr;
}

@Override
public String toString() {
	return "ShoppingVo [name=" + name + ", price=" + price + ", num=" + num + ", total=" + total + ", consignee="
			+ consignee + ", phone=" + phone + ", postalcode=" + postalcode + ", address=" + address + ", sendType="
			+ sendType + ", pageStr=" + pageStr + "]";
}
  
}

②.子控制器

/**
 * 将信息加入购物车
 * @param req
 * @param resp
 * @return
 */
		public String add(HttpServletRequest req, HttpServletResponse resp) {
			HttpSession session=req.getSession();
			User cuser = (User) session.getAttribute("cuser");
			ObjectMapper om=new ObjectMapper();
			try {
				if(cuser!=null) {
					/*点击添加传递到后台的是一个对象,然后购物车需要的是list集合进行显示

					1、第一次添加购物车是没有数据的,也就意味着把vo放到list集合shopGoodsVos中,传递到前台即可

					2、第二次添加到购物车,也就意味着之前有购物车相关信息

					取出原有的购物车信息list 集合,将本次添加购物车的实体类vo放到原有的购物车信息list集合shopGoodsVos中*/
					long uid = cuser.getId();
					List<ShoppingVo> shopGoodsVos=null;
					//从session取出当前用户的购物车信息
					String shoppingInfo=(String)session.getAttribute("shopping_"+uid);
					if(StringUtils.isNotBlank(shoppingInfo)) {
						shopGoodsVos=om.readValue(shoppingInfo, List.class);
				//第2、3次添加
					}else {
						//第一次添加
						shopGoodsVos=new ArrayList<ShoppingVo>();
					}
					//vo指的是前台点击购物车具体内容商品
					shopGoodsVos.add(vo);
					session.setAttribute("shopping"+uid, om.writeValueAsString(shopGoodsVos));
					req.setAttribute("shopGoodsVos", shopGoodsVos);
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
			return "shoppingCar";
		}
		

③.配置

<action path="/shopping" type="com.zy.web.ShoppingAction">
	<forward name="shoppingCar" path="/fg/shoppingCar.jsp" redirect="false" />
	</action>

二.查询购物车

/**
		 * 查询购物车
		 * @param req
		 * @param resp
		 * @return
		 */
		public String list(HttpServletRequest req, HttpServletResponse resp) {
			HttpSession session=req.getSession();
			User cuser = (User) session.getAttribute("cuser");
			ObjectMapper om=new ObjectMapper();
			String shoppingInfo=(String)session.getAttribute("shopping_"+cuser.getId());
			try {
				List<ShoppingVo> shopGoodsVos = om.readValue(shoppingInfo, List.class);
				req.setAttribute("shopGoodsVos", shopGoodsVos);
			} catch (Exception e) {
				e.printStackTrace();
			}
			return "shoppingCar";
		}

??

三.清空购物车

	public void clear(HttpServletRequest req, HttpServletResponse resp) {
			HttpSession session=req.getSession();
			User cuser = (User) session.getAttribute("cuser");
			session.removeAttribute("shopping_"+cuser.getId());
			try {
				ResponseUtil.writeJson(resp, 1);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}

?

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-08 11:51:37  更:2021-10-08 11:52:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:22:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码