一、案例演示
点击购买进入到购物车页面,增加减少数量都会对小计,总计产生影响,点击继续购买,回到挑选页面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版权协议,转载请附上原文出处链接和本声明。