jsp实现购物车


一、案例演示

点击购买进入到购物车页面,增加减少数量都会对小计,总计产生影响,点击继续购买,回到挑选页面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;
        }

版权声明:本文为qq_52108058原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。