购物车的页面
- 初步把购物项的信息显示出来
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>购物车显示页面</title>
</head>
<body>
<h1>购物车显示页面</h1>
<%--empty函数是判断集合中有没有元素--%>
<%--如果购物车是没有任何购物项的--%>
<c:iftest="${empty(cart.bookMap)}">
<h1>您还没有购买过任何的书籍呀!</h1>
</c:if>
<%--如果购物车有购物项,就应该把购物项的信息显示给用户--%>
<c:iftest="${!empty(cart.bookMap)}">
<tableborder="1px">
<tr>
<td>书籍编号</td>
<td>名称</td>
<td>数量</td>
<td>小计</td>
<td>操作</td>
</tr>
<c:forEachitems="${cart.bookMap}"var="me">
<tr>
<td>${me.key}</td>
<td>${me.value.book.name}</td>
<td>${me.value.quantity}</td>
<td>${me.value.price}</td>
<td><ahref="#">删除</a></td>
</tr>
</c:forEach>
<tr>
<tdcolspan="2"><ahref="#">清空购物车</a></td>
<tdcolspan="2">合计:</td>
<td>${cart.price}</td>
</tr>
</table>
</c:if>
</table>
</body>
</html>
- 效果是这样子的:
删除购物车商品
想要删除购物车中的商品,也很简单,把删除操作挂在超链接上,超链接指向DeleteCartServlet,并将想要删除的书本的id带过去(不将id带过去,服务器哪知道你要删除的是哪个)!
<td><ahref="${pageContext.request.contextPath}/DeleteCartBook?bookid=${me.key}">删除</a></td>
开发DeleteCartBook的Servlet
//获取得到用户想要删除哪个书本的id
Stringid=request.getParameter("bookid");
//获取该用户相对应的购物车对象
Cartcart=(Cart)request.getSession().getAttribute("cart");
try{
//删除购物车的商品,也应该是在BusinessService中有的功能,于是乎又回到BusinessService中写代码
BusinessServicebusinessService=newBusinessService();
businessService.deleteBook(id,cart);
//删除购物车的商品后,也应该直接跳转回去购物车的显示页面中
request.getRequestDispatcher("/WEB-INF/listCart.jsp").forward(request,response);
}catch(CartNotFoundExceptione){
request.setAttribute("message","购物车空了!");
request.getRequestDispatcher("/message.jsp").forward(request,response);
}catch(Exceptione){
e.printStackTrace();
request.setAttribute("message","删除中出现了异常~待会再试试呗!");
request.getRequestDispatcher("/message.jsp").forward(request,response);
}