JSP+javabean实现购物车功能

简单的小程序,java后台 + Web前端,可以实现购物车的添加,删除等功能,并没有用到数据库。而是用到的session存取功能。

                                                                          

Product.java

package shopping.cart;


import java.io.Serializable;


@SuppressWarnings("serial")
public class Product implements Serializable{//序列化
	private String id;//产品标识
	private String name;//产品名称
	private String description;//产品描述
	private double price;//产品价格
		
	public Product(){}
	public Product(String id,String name,String description,double price){
		this.id = id;
		this.name = name;
		this.description = description;
		this.price = price;
	}
		
	public void setId(String id){
		this.id = id;
	}
	public void setName(String name){
		this.name = name;
	}
	public void setDescription(String description){
		this.description = description;
	}
	public void setPrice(double price){
		this.price = price;
	}
		
	public String getId(){
		return this.id;
	}
	public String getName(){
		return this.name;
	}
	public String getDescription(){
		return this.description;
	}
	public double getPrice(){
		return this.price;
	}
}

CartItem.java
package shopping.cart;

public class CartItem {  
    private Product product;  
  
    private int count;  
  
    public int getCount() {  
        return count;  
    }  
  
    public void setCount(int count) {  
        this.count = count;  
    }  
  
    public Product getProduct() {  
        return product;  
    }  
  
    public void setProduct(Product product) {  
        this.product = product;  
    }  
}
Cart.java
package shopping.cart;


import java.util.ArrayList;  
import java.util.Iterator;  
import java.util.List;  
  
public class Cart {  
    List<CartItem> items = new ArrayList<CartItem>();  
  
    public List<CartItem> getItems() {  
        return items;  
    }  
  
    public void setItems(List<CartItem> items) {  
        this.items = items;  
    }  
      
    public void add(CartItem ci) {  
        for (Iterator<CartItem> iter = items.iterator(); iter.hasNext();) {  
            CartItem item = iter.next();  
            if(item.getProduct().getId() == ci.getProduct().getId()) {  
                item.setCount(item.getCount() + 1);  
                return;  
            }  
        }  
          
        items.add(ci);  
    }  
      
    public double getTotalPrice() {  
        double d = 0.0;  
        for(Iterator<CartItem> it = items.iterator(); it.hasNext(); ) {  
            CartItem current = it.next();  
            d += current.getProduct().getPrice() * current.getCount();  
        }  
        return d;  
    }  
      
    public void deleteItemById(String productId) {  
        for (Iterator<CartItem> iter = items.iterator(); iter.hasNext();) {  
            CartItem item = iter.next();  
            if(item.getProduct().getId().equals(productId)) {
                iter.remove();
                return;
            }
        }
    }  
}
ShowProducts.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>  
<%@ page import="shopping.cart.*"%>  
<%
    String path = request.getContextPath();  
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";  
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
    <head>
        <title>My JSP 'ShowProductsJSP.jsp' starting page</title>  
        <meta http-equiv="pragma" content="no-cache">  
        <meta http-equiv="cache-control" content="no-cache">  
        <meta http-equiv="expires" content="0">  
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
        <meta http-equiv="description" content="This is my page">   
    </head>  
    <body bgcolor="#ffffff">  
        <% 
            Map products = new HashMap();  
            products.put("1612001", new Product("1612001", "mp3播放器","效果很不错的mp3播放器,存储空间达1GB", 100.00));  
            products.put("1612002", new Product("1612002", "数码相机", "像素500万,10倍光学变焦",500.00));  
            products.put("1612003", new Product("1612003", "数码摄像机","120万象素,支持夜景拍摄,20倍光学变焦", 200.00));  
            products.put("1612004", new Product("1612004", "迷你mp4","市面所能见到的最好的mp4播放器,国产", 300.00));  
            products.put("1612005", new Product("1612005", "多功能手机","集mp3播放、100万象素数码相机,手机功能于一体", 400.00));  
            products.put("1612006", new Product("1612006", "苹果4S","高贵的品牌手机,智能手机,公鸡中的战斗机",2399.00)); 
            session.setAttribute("products", products);
        %>  
        <H1>产品显示</H1>
        <form name="productForm" action="" method="POST">  
            <input type="hidden" name="action" value="purchase">  
            <table border="1" cellspacing="0">  
                <tr bgcolor="#CCCCCC">
                    <tr bgcolor="#CCCCCC">  
                        <td>序号</td>  
                        <td>产品名称</td>  
                        <td>产品描述</td>  
                        <td>产品单价(¥)</td>
                        <td>添加到购物车 </td>  
                    </tr>  
                    <%  
                        Set productIdSet = products.keySet();  
                        Iterator it = productIdSet.iterator();  
                        int number = 1;
                        while (it.hasNext()) {  
                            String id = (String) it.next();  
                            Product product = (Product) products.get(id);  
                    %><tr>  
                        <td><%=number++%></td>  
                        <td><%=product.getName()%></td>  
                        <td><%=product.getDescription()%></td>  
                        <td><%=product.getPrice()%></td>  
                        <td><a href="Buy.jsp?id=<%=product.getId()%>&action=add" target="cart">我要购买</a></td>  
                    </tr>  
                    <%  
                        }  
                    %>
            </table>  
            <p></p>
        </form>  
    </body>  
</html>
Buy.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>  
<%@ page import="shopping.cart.*" %>
<%  
    Cart c = (Cart)session.getAttribute("cart");  
    if(c == null) {  
        c = new Cart();  
        session.setAttribute("cart", c);  
    }
    double totalPrice = c.getTotalPrice();
    request.setCharacterEncoding("GBK");  
    String action = request.getParameter("action");  
  
    Map products = (HashMap)session.getAttribute("products");  
  
    if(action != null && action.trim().equals("add")) {  
        String id = request.getParameter("id");  
        Product p = (Product)products.get(id);  
        CartItem ci = new CartItem();  
        ci.setProduct(p);  
        ci.setCount(1);  
        c.add(ci);  
    }  
  
    if(action != null && action.trim().equals("delete")) {  
        String id = request.getParameter("id");  
        c.deleteItemById(id);  
    }  
  
    if(action != null && action.trim().equals("update")) {  
        for(int i=0; i<c.getItems().size(); i++) {  
             CartItem ci = c.getItems().get(i);  
             int count = Integer.parseInt(request.getParameter("p" + ci.getProduct().getId()));  
            ci.setCount(count);  
        }  
    }  
 %>   
 
<%  
    String path = request.getContextPath();  
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
%>  

<%  
    List<CartItem> items = c.getItems();  
%>  
  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
    <head>  
    <meta http-equiv="Content-Type" content="text/html; charset=GB18030">  
        <title>购物车</title>
    </head>  
    <body>
        <!-- c的值是:<%=(c == null) %> items的值是:<%=(items == null) %> -->  
        <form action="Buy.jsp" method="get">  
        <input type="hidden" name="action" value="update"/>  
        <table align="center" border="1">  
            <tr>  
                <td>产品ID</td>  
                <td>产品名称</td>  
                <td>购买数量</td>  
                <td>单价</td>  
                <td>总价</td>  
                <td>处理</td>  
            </tr>  
            <%  
                for(Iterator<CartItem> it = items.iterator(); it.hasNext(); ) {  
                    CartItem ci = it.next();  
            %>  
            <tr>  
                <td><%=ci.getProduct().getId() %></td>  
                <td><%=ci.getProduct().getName() %></td>  
                <td>  
                    <input type="text" size=3 name="<%="p" + ci.getProduct().getId() %>" value="<%=ci.getCount() %>"   
                        οnkeypress="if (event.keyCode < 45 || event.keyCode > 57) event.returnValue = false;"  
                            οnchange="document.forms[0].submit()">                 
                </td>  
                <td><%=ci.getProduct().getPrice() %></td>  
                <td><%=ci.getProduct().getPrice()*ci.getCount() %></td>  
                <td> 
                <a href="Buy.jsp?action=delete&id=<%=ci.getProduct().getId() %>">删除</a>
                </td>  
            </tr>  
            <%  
                }  
            %>
            <tr>  
                <td colspan=3 align="right">所有商品总价格为:</td>  
                <td colspan=3><%=c.getTotalPrice() %></td>  
            </tr>
            <tr>  
             <!-- <td colspan=3>  
               <a href="javascript:document.forms[0].submit()">修改</a>   
               </td>  -->  
                <td colspan=6 align="right"><a href="">下单</a></td>  
            </tr>  
        </table>  
    </form>  
    </body>  
</html>


下面是采用同样session方法,但浅显易懂的一种方式:

地址:http://download.csdn.net/detail/qq_28306215/9702155

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值