文章目录
- 一、案例演示
- 二、实现步骤
- 1.info.jsp
- 2.UserServlet
- 3.cart.jsp
- 4.UserServlet
一、案例演示
点击购买进入到购物车页面,增加减少数量都会对小计,总计产生影响,点击继续购买,回到挑选页面product_list.jsp
二、实现步骤
1.info.jsp
找到info.jsp的购买超链接,修改路径到UserServlet这里我用xml映射路径/client/logins,相应传输到cart.jsp购物车页面
<div style="text-align:center; margin-top:10px"><a href="${pageContext.request.contextPath}/client/logins?act=add&id=${p.id}"><img src="${pageContext.request.contextPath }/client/images/buybutton.gif" border="0" width="100" height="25" /> </a></div>
2.UserServlet
判断传来的act=add执行以下代码,先判断用户是否登录,没有登录,跳转到提示页面,登录把相应数据传给cart.jsp
//添加购物车if("add".equals(act)){//判断用户是否登录,没有登录,跳转到提示页面HttpSession session=request.getSession();Users user= (Users) session.getAttribute("user");if(user==null){response.sendRedirect(request.getContextPath()+"/client/error/privilege.jsp");}String id= request.getParameter("id");int bid=Integer.parseInt(id);BooksDao bd=new BooksDao();Books book=bd.getBooks(bid);Map<Books,Integer> cart= (Map<Books, Integer>) session.getAttribute("cart");if(cart==null){cart=new HashMap<Books,Integer>();}Integer count =cart.put(book,1);if(count!=null){cart.put(book,count+1);}session.setAttribute("cart",cart);response.sendRedirect(request.getContextPath()+"/client/cart.jsp");return;}
3.cart.jsp
找到表单提交的超链接,判断进行数量增加,减少和删除,提交时传act=change用来识别操作,传输路径为UserServlet这里我用xml映射路径/client/logins
<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.num}','${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.num}','${entry.key.id}')"></td><td width="10%">${entry.key.num}</td><td width="10%">${entry.key.price*entry.value}</td><td width="10%"><!-- 删除商品 --><a href="${pageContext.request.contextPath}/client/logins?act=change&?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>
4.UserServlet
判断count是否为0,是则删除该列,否则成功修改
if("change".equals(act)){String id= request.getParameter("id");int bid=Integer.parseInt(id);int count =Integer.parseInt(request.getParameter("count"));HttpSession session=request.getSession();Map<Books,Integer> cart= (Map<Books, Integer>) session.getAttribute("cart");Books b=new Books();b.setId(bid);if(count!=0){cart.put(b,count);}else {cart.remove(b);}response.sendRedirect(request.getContextPath()+"/client/cart.jsp");return;}