JSP购物车实例讲解

名词解释:
    购物车,顾名思义,就是具有与超市中购物车相同功能的模块.
本例主要以实现购物车基本功能(向购物车中添加商品,修改商品,删除商品).我将采用Struts1.2来写这个例子,好了,现在我们开始.成品如下图:

JSP购物车实例讲解_第1张图片

 

 

 

 

图-1

 

JSP购物车实例讲解_第2张图片

 

图-2

 

 

一.我们首先要建立数据库,内容很简单,只需有三个字段,即:商品编号,商品名称,商品价格.然后为其添加一些商品即可.
二.在首页面上我们用多选框来选定要买的商品,然后将每个选定的商品的编号作为一个数组传入Action中进行处理.
三.下面为大家来讲解一下Action中对于购物车功能实现的核心代码:

        //这一步很简单,就是获取session.用于我们后来存储购物车的内容.
         HttpSession session = request.getSession();
        //这一步就是从session中获取购物车.
  Vector car = (Vector) session.getAttribute("car");
        //这是我首页面的Form表单
  IndexForm inf = (IndexForm) form;
        //product_do是我对于商品处理的一个类,其中包括安商品编号查找商品所有信息.
  product_do pdo = new product_do();
        //这就是我们得到的从首页面传过来的选定的商品编号的数组
  String[] choice = inf.getChoice();
        //下面判断这个数组是否为空.
     if (choice.length == 0) {
     //如果为空,说明没有选定任何商品,则跳回首页面
  return mapping.getInputForward();
     } else {
            //如果不为空,遍历这个数组.
   for (int i = 0; i < choice.length; i++) {
                              //声明一个布尔型变量,用于以后对于购买重复商品则数量叠加的控制.
    boolean f = false;
                              //安数组中的现在下标位置的值(也就是商品编号),来获得这个商品的所有信息,并存入一个商品的javabean.
    productBean pb = pdo.showproductByid(Integer
      .parseInt(choice[i]));
                              //创建一个新的购物车bean,并向其存入上面得到的商品bean里面的商品信息.
    carBean cb = new carBean();
    cb.setProduct_id(pb.getProduct_id());
    cb.setProduct_name(pb.getProduct_name());
    cb.setProduct_price(pb.getProduct_price());
    cb.setProduct_num(1);
    cb.setProduct_totalmoney();
                              //这个判断是检查上面得到的购物车car是否为空
    if (car==null) {
    //如果为空的话,创建一个新的集合Vector,并将上面创建的购物车carBean存放进来.
     car = new Vector();
     car.addElement(cb);
    } else {
    //如果不为空的话,遍历session中得到的购物车car.
     for (int j = 0; j < car.size(); j++) {
     //如果当前商品在购物车中已经存在的话,就给它的数量加一,并且重新计算它的总价格,然后重新放回到car的原位置
      carBean cb2 = (carBean) car.elementAt(j);
      if (cb2.getProduct_id() == cb.getProduct_id()) {
       cb2.setProduct_num(cb2.getProduct_num() + 1);
       cb2.setProduct_totalmoney();
       car.setElementAt(cb2, j);
       f = true;
      }
     }
          //购物车中没有当前商品时,将其添加到购物车中
     if (f == false) {
      car.addElement(cb);
     }
    }
   }

  }
  //将购物车car放入session中,然后跳转到查看购物车页面.
  session.setAttribute("car", car);
  return mapping.findForward("tocar");

 

四.下面我将给出商品bean和购物车bean的源代码

    商品bean:  productBean

  

  public class productBean {
 int product_id;

 String product_name;

 float product_price;

 public int getProduct_id() {
  return product_id;
 }

 public void setProduct_id(int product_id) {
  this.product_id = product_id;
 }

 public String getProduct_name() {
  return product_name;
 }

 public void setProduct_name(String product_name) {
  this.product_name = product_name;
 }

 public float getProduct_price() {
  return product_price;
 }

 public void setProduct_price(float product_price) {
  this.product_price = product_price;
 }
    }

    
    购物车bean:  carBean

   

 public class carBean {
 int product_id;

 String product_name;

 float product_price;

 int product_num;

 float product_totalmoney;

 public int getProduct_id() {
  return product_id;
 }

 public void setProduct_id(int product_id) {
  this.product_id = product_id;
 }

 public String getProduct_name() {
  return product_name;
 }

 public void setProduct_name(String product_name) {
  this.product_name = product_name;
 }

 public int getProduct_num() {
  return product_num;
 }

 public void setProduct_num(int product_num) {
  this.product_num = product_num;
 }

 public float getProduct_price() {
  return product_price;
 }

 public void setProduct_price(float product_price) {
  this.product_price = product_price;
 }

 public float getProduct_totalmoney() {
  return product_totalmoney;
 }

 public void setProduct_totalmoney() {
  this.product_totalmoney = product_price * product_num;
 }
     }

 
五.下面给出商品处理的逻辑类的源代码:

    product_do:

public class product_do {
 
 public productBean showproductByid(int id) {
  productBean pb = null;
  Connection conn = DBConnect.getDB();
  Statement stmt = null;
  ResultSet rs = null;
  try {
   stmt = conn.createStatement();
   rs = stmt.executeQuery("select * from product where product_id="
     + id);
   while (rs.next()) {
    pb = new productBean();
    pb.setProduct_id(rs.getInt(1));
    pb.setProduct_name(rs.getString(2));
    pb.setProduct_price(rs.getFloat(3));

   }
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } finally {
   try {
    if (rs != null)
     rs.close();
    if (stmt != null)
     stmt.close();
    if (conn != null)
     conn.close();
   } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
  return pb;
 }
}

 
六.好了,主要逻辑已经讲完了,我只是给出了一些核心代码,至于页面上如何显示,各页面与Action之间如何连接就看各位看官自己的爱好了,至于还想要什么功能应该也不是什么难事,如果有问题的话请给我留言,谢谢各位!

你可能感兴趣的:(JSF)