先看看模块的文件目录结构:
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。