初学者 模拟购物车(包含添加商品和删除商品功能)
2017-07-13 15:28
603 查看
购物车界面与功能实现分析图:
购物车对象:
package cn.itsource._01_buycart.domain; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * 购物车对象 * */ public class ShoppingCart { //表示购物车对象中的所有商品 private List<CartItem> items = new ArrayList<>(); public List<CartItem> getItems() { return items; } public void setItems(List<CartItem> items) { this.items = items; } /** * 计算购物车中商品总价 * */ public Double getTotalPrice(){ Double totalPrice = 0D; for (CartItem item : items) { totalPrice += item.getPrice()*item.getNum(); } return totalPrice; } /** * 设计一个向购物车中添加商品的方法 * */ public void save(CartItem newItem){ /** * 遍历所有的商品,如果商品相同,就将数量进行相加 * 如果全部不同,则需要把商品单独添加到购物车 * */ for (CartItem item : items) { //比较id if(newItem.getId().equals(item.getId())){ //修改item的数量 .item是购物车原有的数据 item.setNum(item.getNum() +newItem.getNum()); return; //不终止代码执行,则会执行后面的代码。 } } //如果全部不同,则需要把商品单独添加到购物车 items.add(newItem); } /** * 从购物车中删除一个商品 * */ public void delete(String id){ /** * 在使用遍历时,如果对遍历的这个集合进行修改或者删除的话。容易出现线程并发安全问题(线程并发修改异常) * */ /* for (CartItem item : items) { if(id.equals(item.getId())){ items.remove(item); break; } } */ /** * 从集合中删除一个商品,需要使用迭代器。使用 Iterator对象.remove()方法删除 * */ Iterator<CartItem> it = items.iterator();//拿到迭代器 while(it.hasNext()){ //hasNext():是否存在下一个对象元素 CartItem item = it.next();//拿到购物车中所有商品 //判断。如果商品id和传过来的id一样,则删除 if(id.equals(item.getId())){ it.remove(); break; } } } @Override public String toString() { return "ShoppingCart [items=" + items + "]"; } }
购物车中的商品项:
package cn.itsource._01_buycart.domain; /** * 该类表示购物车中的一个商品项 * */ public class CartItem { //商品编号 private String id; //商品名称 private String name; //商品价格 private Double price; //商品数量 private Integer num; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Double getPrice() { return price; } public void setPrice(Double price) { this.price = price; } public Integer getNum() { return num; } public void setNum(Integer num) { this.num = num; } @Override public String toString() { return "CartItem [id=" + id + ", name=" + name + ", price=" + price + ", num=" + num + "]"; } }
实现购物车的servlet:
package cn.itsource._01_buycart.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import cn.itsource._01_buycart.domain.CartItem; import cn.itsource._01_buycart.domain.ShoppingCart; /** * 购物车实现servlet * */ @WebServlet("/shoppingCart") public class ShoopingCartServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("UTF-8"); String cmd = req.getParameter("cmd"); /** * 传入一个cmd 用来做删除 * */ if("delete".equals(cmd)){ //1.拿到参数 id String id = req.getParameter("id"); //2.从session中拿到购物车 HttpSession session = req.getSession(); ShoppingCart cart = (ShoppingCart)session.getAttribute("SHOPPING_IN_CART"); //3.从购物车中删除相应的商品 cart.delete(id); //4.跳转到展示页面 resp.sendRedirect("/buycart/buycart.jsp"); }else{ /** * 实现商品添加功能 * 1.拿到参数,封装CartItem(商品项)对象 * 2.从session中拿到购物车 * 如果session中没有购物车,创建购物车并放到session中 * 3.将CartItem(商品项)对象放到购物车 * 4.跳转到展示页面 * */ String id = req.getParameter("id"); String num = req.getParameter("num"); //为了封装对象,所以需要创建商品对象 。以下代码完成了第一步 CartItem item = new CartItem(); item.setId(id);//因为都要设置id就不需要每个都设置,直接在外面设置。 item.setNum(Integer.parseInt(num)); if("1".equals(id)){ item.setName("苹果电脑"); item.setPrice(10000D); }else if("2".equals(id)){ item.setName("苹果手机"); item.setPrice(7000D); }else if("3".equals(id)){ item.setName("苹果手表"); item.setPrice(10000D); } //2.从session中拿到购物车 如果session中没有购物车,创建购物车并放到session中 HttpSession session = req.getSession(); ShoppingCart cart = (ShoppingCart)session.getAttribute("SHOPPING_IN_CART"); if(cart == null){ //判断购物车为空 cart = new ShoppingCart(); //创建一个购物车 session.setAttribute("SHOPPING_IN_CART", cart);//将购物车放到session中 } //3.将CartItem(商品项)对象放到购物车. 调用save()方法即可 cart.save(item); //4.跳转到展示页面 resp.sendRedirect("/buycart/buycart.jsp"); } } }
(表单样式显示购物车)buycart.jsp文件:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <style type="text/css"> table{ border-collapse: collapse; width: 500px; text-align: center; } table th,table td{ border: 1px solid black; } </style> </head> <body>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <style type="text/css"> table{ border-collapse: collapse; width: 500px; text-align: center; } table th,table td{ border: 1px solid black; } </style> </head> <body>
<%--展示购物车 因为购物车放到session中的。 JSP九大内置对象就有session --%>
<a href="/buycart/edit.jsp">买</a>
<table>
<tr>
<th>商品编号</th>
<th>商品名称</th>
<th>商品价格</th>
<th>商品数量</th>
<th>操作</th>
</tr>
<c:if test="${not empty SHOPPING_IN_CART.items}">
<%-- 使用遍历的方式,获得所有商品的信息,并使用表格的方式显示出来 --%>
<c:forEach items="${SHOPPING_IN_CART.items}" var="item">
<tr>
<td>${item.id}</td>
<td>${item.name}</td>
<td>${item.price}</td>
<td>${item.num}</td>
<td><a href="/shoppingCart?cmd=delete&id=${item.id}">删除</a></td>
</tr>
</c:forEach>
<tr>
<td colspan="5">总价格:${SHOPPING_IN_CART.totalPrice}</td>
</tr>
</c:if>
<c:if test="${empty SHOPPING_IN_CART.items}">
<td colspan="5">您的购物车中没有商品,请选购。</td>
</c:if>
</table>
</body>
</html>
<%--展示购物车 因为购物车放到session中的。 JSP九大内置对象就有session --%><a href="/buycart/edit.jsp">买</a><table><tr><th>商品编号</th><th>商品名称</th><th>商品价格</th><th>商品数量</th><th>操作</th></tr><c:if test="${not empty SHOPPING_IN_CART.items}"><%-- 使用遍
a29b
历的方式,获得所有商品的信息,并使用表格的方式显示出来 --%><c:forEach
items="${SHOPPING_IN_CART.items}" var="item"><tr><td>${item.id}</td><td>${item.name}</td><td>${item.price}</td><td>${item.num}</td><td><a href="/shoppingCart?cmd=delete&id=${item.id}">删除</a></td></tr></c:forEach><tr><td colspan="5">总价格:${SHOPPING_IN_CART.totalPrice}</td></tr></c:if><c:if
test="${empty SHOPPING_IN_CART.items}"><td colspan="5">您的购物车中没有商品,请选购。</td></c:if></table></body></html>
展示页面 edit.jsp:
相关文章推荐
- 我的练习项目: 模拟淘宝搜索商品、添加商品到购物车功能、修改商品信息功能
- Android-----购物车(包含侧滑删除,商品筛选,商品增加和减少,价格计算,店铺分类等)
- 饿了么项目---11、添加商品到购物车的联动功能(1)
- 模拟网易邮箱实现全选,全不的功能/使用DataList实现 加入购物车,编辑,删除,更新,取消功能。/试完成Datalist使用存储过程来分页
- Angularjs实现购物车功能(按钮增减数量、添加、全选、删除、批量删除、结算)
- JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
- 基于JQuery的购物车添加删除以及结算功能
- Android自定义控件之高仿京东购物车添加或者减少商品数量功能
- 用jsp实现一个简单的购物车web应用系统。实现的添加购物商品,删除购物商品并且显示购物车信息。
- 利用DhtmlXtree实现展现,修改,添加,删除,移动功能一棵树上实现,iframe的单个滑动条显示,包含在iframe中树节点中文内容过长问题解决
- 购物车基本功能(添加,删除)
- 电商网站中添加商品到购物车功能模块2017.12.8
- andriod———1.实现原生登录注册。 2.首页完成商品列表展示点击相对应的商品ID进入商品详情 3.商品详情页面展示数据,点击加入购物车进入购物车页面 4.购物车页面完成购物车编辑,删除,功能
- Android-----购物车(包含侧滑删除,商品筛选,商品增加和减少,价格计算,店铺分类等)
- 1模拟网易邮箱实现全选,全不的功能(服务端和客户端) 2 使用DataList实现 加入购物车,编辑,删除,更新,取消功能。要求连一个产品表。
- 原生JS实现购物车的添加删除,以及总价计算的功能
- dedecms购物车商品添加删除数量改变方式变成ajax
- Android-----购物车(包含侧滑删除,商品筛选,商品增加和减少,价格计算,店铺分类等)
- 基于JQuery的购物车添加删除以及结算功能示例