购物车模块myshoppingcart

本文介绍了一个简单的购物车系统的实现方式,包括核心类CartItem和Cart的设计,以及Servlet如何处理添加、删除、修改等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先看看模块的文件目录结构:

CartItem.java的源代码:

public class CartItem {
	
	private Computer c;
	private int quantity;
	
	public Computer getC() {
		return c;
	}
	public void setC(Computer c) {
		this.c = c;
	}
	public int getQuantity() {
		return quantity;
	}
	public void setQuantity(int quantity) {
		this.quantity = quantity;
	}

}
Cart.java的源代码:

public class Cart {
	
	private List<CartItem> items=new ArrayList<CartItem>();
	
	public boolean add(CartItem c){
		for(int i=0;i<items.size();i++){
			CartItem item=items.get(i);
			if(item.getC().getId()==c.getC().getId()){
				return false;
			}
		}
		items.add(c);
		return true;
	}
	
	public List<CartItem> list(){
		return items;
	}
	
	public double getTotalPrice(){
		double sum=0;
		for(int i=0;i<items.size();i++){
			CartItem item=items.get(i);
			sum+=item.getQuantity()*item.getC().getPrice();
		}
		return  sum;
	}
	
	public void delete(long id){
		for(int i=0;i<items.size();i++){
			CartItem item=items.get(i);
			if(item.getC().getId()==id){
				items.remove(item);
				return;
			}
		}
	}
	
	public void clear(){
		items.clear();
	}
	
	public void modify(long id,int quantity){
		for(int i=0;i<items.size();i++){
			CartItem item=items.get(i);
			if(item.getC().getId()==id){
				item.setQuantity(quantity);
				return;
			}
		}
	}

}
ShoppingCartServlet.java的源代码:

public class ShoppingCartServlet extends HttpServlet {

	public void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		String uri=request.getRequestURI();
		String path=uri.substring(uri.lastIndexOf("/"),uri.lastIndexOf("."));
		if(path.equals("/list")){
			ComputerDAO dao=new ComputerDAO();
			try {
				List<Computer> computers=dao.findAll();
				request.setAttribute("computers",computers);
				request.getRequestDispatcher("computer_list.jsp").forward(request, response);
			} catch (Exception e) {
				e.printStackTrace();
				throw new ServletException(e);
			}
		}else if(path.equals("/buy")){
			String id=request.getParameter("id");
			ComputerDAO dao=new ComputerDAO();
			try {
				Computer c = dao.findById(Long.parseLong(id));
				HttpSession session=request.getSession();
				Cart cart=(Cart) session.getAttribute("cart");
				if(cart==null){
					cart=new Cart();
					session.setAttribute("cart",cart);
				}
				CartItem item=new CartItem();
				item.setC(c);
				item.setQuantity(1);
				boolean flag=cart.add(item);
				if(!flag){
					request.setAttribute("buy_err"+id,"你已经购买过该商品");
					request.getRequestDispatcher("list.do").forward(request, response);
				}else{
					response.sendRedirect("list.do");
				}
			} catch (Exception e) {
				e.printStackTrace();
				throw new ServletException(e);
			} 
			
			
		}else if(path.equals("/delete")){
			String id=request.getParameter("id");
			HttpSession session=request.getSession();
			Cart cart=(Cart) session.getAttribute("cart");
			cart.delete(Long.parseLong(id));
			request.getRequestDispatcher("cart.jsp").forward(request, response);
		}else if(path.equals("/clear")){
			HttpSession session=request.getSession();
			Cart cart=(Cart) session.getAttribute("cart");
			cart.clear();
			request.getRequestDispatcher("cart.jsp").forward(request, response);
		}else if(path.equals("/modify")){
			String id=request.getParameter("id");
			String quantity=request.getParameter("quantity");
			HttpSession session=request.getSession();
			Cart cart=(Cart) session.getAttribute("cart");
			cart.modify(Long.parseLong(id),Integer.parseInt(quantity));
			request.getRequestDispatcher("cart.jsp").forward(request, response);
		}
	}

}
computer_list.jsp的源代码:

<%@ page import="entity.Computer,java.util.*" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>商品列表</h3>
<table>
<tr><td>商品型号</td><td>商品图片</td><td>商品说明</td><td>商品价格</td></tr>
<%
List<Computer> computers=(List<Computer>)request.getAttribute("computers");
for(int i=0;i<computers.size();i++){
	Computer curr=computers.get(i);
	%>
<tr>
<td><%=curr.getType()%></td>
<td><img src="img/<%=curr.getPicName()%>" width="150" height="110"/></td>
<td><%=curr.getProdDesc()%></td>
<td>¥<%=curr.getPrice()%></td>
<td><a href="buy.do?id=<%=curr.getId()%>">购买</a>
<%
String info=(String)request.getAttribute("buy_err"+curr.getId());
%>
<span style="color:red"><%=(info==null)?"":info%></span></td>
</tr>
	<%
}
%>

</table>
<br>
<input type="button" value="查看购物车" onclick="location='cart.jsp'"/>
</body>
</html>
cart.jsp的源代码:

<%@ page import="bean.*,java.util.*"
	contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Insert title here</title>
	</head>
	<body>
		<h3>
			购物车信息
		</h3>
		<table>
			<tr>
				<td>
					商品名称
				</td>
				<td>
					商品单价
				</td>
				<td>
					商品数量
				</td>
			</tr>
			<%
				Cart cart = (Cart) session.getAttribute("cart");
				if (cart != null && cart.list().size() > 0) {
					List<CartItem> items = cart.list();
					for (int i = 0; i < items.size(); i++) {
						CartItem item = items.get(i);
			%>
			<tr>
				<td><%=item.getC().getType()%></td>
				<td>
					¥<%=item.getC().getPrice()%></td>
				<td><%=item.getQuantity()%></td>
				<td>
					<input type="text" size="3" id="num_<%=item.getC().getId()%>">
				</td>
				<td>
					<a href="javascript:;"
						onclick="location='modify.do?id=<%=item.getC().getId()%>'+
						'&quantity='+document.getElementById('num_<%=item.getC().getId()%>').value;">
						更改数量</a>
				</td>
				<td>
					<a href="test.do?id=<%=item.getC().getId()%>">测试</a>
				</td>
				<td>
					<a href="delete.do?id=<%=item.getC().getId()%>">删除</a>
				</td>
			</tr>
			<%
				}
				} else {
			%>
			<tr>
				<td>
					你还没有选购任何商品
				</td>
			</tr>
			<%
				}
			%>
			<tr>
				<td>
					商品总价格:¥<%=cart.getTotalPrice()%></td>
			</tr>
		</table>
		<input type="button" value="返回商品列表" onclick="location='list.do'">
		<input type="button" value="清空购物车" onclick="location='clear.do'">
	</body>
</html>
全部打包文件已经上传至我的资源,可以免费下载,菜鸟可以学习学习。sql脚本过于简单,可以参看源码自己写出来,代码里不再给出。IDE为myeclipse6.5。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值