100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 案例:实现在购物车中添加商品和删除购物车中指定商品的功能

案例:实现在购物车中添加商品和删除购物车中指定商品的功能

时间:2021-11-11 04:33:50

相关推荐

案例:实现在购物车中添加商品和删除购物车中指定商品的功能

一、向购物车中添加商品

1.1.创建AddCartServlet

public class AddCartServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request, response);}@SuppressWarnings("unchecked")public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 1.得到商品idString id = request.getParameter("id");// 2.调用service层方法,根据id查找商品ProductService service = new ProductService();try {Product p = service.findProductById(id);//3.将商品添加到购物车//3.1获得session对象HttpSession session = request.getSession();//3.2从session中获取购物车对象Map<Product, Integer> cart = (Map<Product, Integer>)session.getAttribute("cart");//3.3如果购物车为null,说明没有商品存储在购物车中,创建出购物车if (cart == null) {cart = new HashMap<Product, Integer>();}//3.4向购物车中添加商品Integer count = cart.put(p, 1);//returns: the previous value associated with key, or null if there was no mapping for key.//3.5如果商品数量不为空,则商品数量+1,否则添加新的商品信息if (count != null) {cart.put(p, count + 1);}session.setAttribute("cart", cart);response.sendRedirect(request.getContextPath() + "/client/cart.jsp");return;} catch (FindProductByIdException e) {e.printStackTrace();}}}

1.2.编写购物车页面cart.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@taglib prefix="c" uri="/jsp/jstl/core"%><%@taglib prefix="p" uri="/tag"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>电子书城</title><link rel="stylesheet" href="${pageContext.request.contextPath}/client/css/main.css" type="text/css" /><script>//当商品数量发生变化时触发该方法function changeProductNum(count, totalCount, id) {count = parseInt(count);totalCount = parseInt(totalCount);//如果数量为0,判断是否要删除商品if (count == 0) {var flag = window.confirm("确认删除商品吗?");if (!flag) {count = 1;}}if (count > totalCount) {alert("已达到商品最大购买量");count = totalCount;}location.href = "${pageContext.request.contextPath}/changeCart?id="+ id + "&count=" + count;}//删除购物车中的商品function cart_del() { var msg = "您确定要删除该商品吗?"; if (confirm(msg)==true){ return true; }else{ return false; } } </script></head><body class="main"><p:user/><jsp:include page="head.jsp" /><jsp:include page="menu_search.jsp" /><div id="divpagecontent"><table width="100%" border="0" cellspacing="0"><tr><td><div style="text-align:right; margin:5px 10px 5px 0px"><a href="${pageContext.request.contextPath }/index.jsp">首页</a>&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;购物车</div><table cellspacing="0" class="infocontent"><tr><td><img src="${pageContext.request.contextPath}/client/ad/page_ad.jpg" width="900" height="89" /><table width="100%" border="0" cellspacing="0"><tr><td><img src="${pageContext.request.contextPath}/client/images/buy1.gif" width="635" height="38" /></td></tr><tr><td><table cellspacing="1" class="carttable"><tr><td width="10%">序号</td><td width="30%">商品名称</td><td width="10%">价格</td><td width="20%">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数量</td><td width="10%">库存</td><td width="10%">小计</td><td width="10%">取消</td></tr></table><!-- 循环输出商品信息 --><c:set var="total" value="0" /> <c:forEach items="${cart}" var="entry" varStatus="vs"><table width="100%" border="0" cellspacing="0"><tr><td width="10%">${vs.count}</td><td width="30%">${entry.key.name }</td><td width="10%">${entry.key.price }</td><td width="20%"><!-- 减少商品数量 --><input type="button" value='-' style="width:20px"onclick="changeProductNum('${entry.value-1}','${entry.key.pnum}','${entry.key.id}')"><!-- 商品数量显示 --><input name="text" type="text" value="${entry.value}" style="width:40px;text-align:center" /><!-- 增加商品数量 --><input type="button" value='+' style="width:20px"onclick="changeProductNum('${entry.value+1}','${entry.key.pnum}','${entry.key.id}')"></td><td width="10%">${entry.key.pnum}</td><td width="10%">${entry.key.price*entry.value}</td><td width="10%"><!-- 删除商品 --><a href="${pageContext.request.contextPath}/changeCart?id=${entry.key.id}&count=0"style="color:#FF0000; font-weight:bold" onclick="javascript:return cart_del()">X</a></td></tr></table><c:set value="${total+entry.key.price*entry.value}" var="total" /></c:forEach><table cellspacing="1" class="carttable"><tr><td style="text-align:right; padding-right:40px;"><font style="color:#FF6600; font-weight:bold">合计:&nbsp;&nbsp;${total}元</font></td></tr></table><div style="text-align:right; margin-top:10px"><!--继续购物 --><a href="${pageContext.request.contextPath}/showProductByPage"><img src="images/gwc_jx.gif" border="0" /></a>&nbsp;&nbsp;&nbsp;&nbsp;<!--结账 --><a href="${pageContext.request.contextPath}/client/order.jsp"><img src="${pageContext.request.contextPath}/client/images/gwc_buy.gif" border="0" /></a></div></td></tr></table></td></tr></table></td></tr></table></div><jsp:include page="foot.jsp" /></body></html>

二、删除购物车中指定商品

创建ChangeCartServlet

/*** 购物车内容变更* @author admin**/public class ChangeCartServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 1.得到商品idString id = request.getParameter("id");// 2.得到要修改的数量int count = Integer.parseInt(request.getParameter("count"));// 3.从session中获取购物车.HttpSession session = request.getSession();Map<Product, Integer> cart = (Map<Product, Integer>) session.getAttribute("cart");Product p = new Product();p.setId(id);if (count != 0) {cart.put(p, count);} else {cart.remove(p);}response.sendRedirect(request.getContextPath() + "/client/cart.jsp");return;}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。