JavaWeb(MVC购物车02)

一、在购物车界面点击结算过久生产订单:

1、确认订单界面简洁代码展示

<h1>确认订单</h1>
  
  
<h6>确认收货地址</h6>
<input type="text" id="oaddress" style="width:100%;height:40px"/>
<hr/>
<h6>确认订单信息</h6>
<p>商品总件数${sessionScope.maps.sumCount}</p>
 
<h6>商品信息</h6>
<c:forEach items="${sessionScope.maps.cartByUsersid}" var="mycart">
  <span>
    <span>${mycart.g.gname}</span>
    <img src="${mycart.g.gpath}" width="100" height="100"/>
  </span>
  
</c:forEach>
<hr/>
<p style="text-align:center">
  <h1>总金额:${sessionScope.maps.sumPrice}</h1>
</p>
  <p style="text-align:center">
    <button style="background: pink;color:white;font-weight:bold;width:100px;height:50px;border-radius: 100%;cursor: pointer;" onclick="confirmOrder()">确认订单</button>
  </p>
  <script type="text/javascript">
    //确认订单的点击事件
    function confirmOrder(){
      var oaddress=document.getElementById("oaddress");
      //alert(oaddress.value);
      if(!oaddress.value){
        alert("请输入地址再确认订单");
        return;
      }
      location.href="ConfirmOrderServlet?oaddress="+oaddress.value;
    }
  </script>

二、提交过后生产订单详情

// 1.设置字符集编码
    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");
 
    // 获取
    String oaddress = request.getParameter("oaddress");
    // System.out.println("oaddress="+oaddress);
 
    // 生成一个所谓订单 以及生成订单的同时 生成 详情
    // userid num price oaddress ostate
    // 获取session
    HttpSession session = request.getSession();
    // 用户
    Yongy y = (Yongy) session.getAttribute("users");
    ICartBiz icb = new CartBiz();
    List<Cart> cartByUsersid = icb.getCartByUsersid(y.getYid());
    
    // 1.总件数
    int sumCount = 0;
    int sumPrice = 0;
    for (Cart cart : cartByUsersid) {
      sumCount += cart.getCcount();
      sumPrice += cart.getCtotal();
    }
    //实例化Order实体 来封装以上获取的属性
    Order order=new Order(new BaseDao().getTableMaxID("orders", "orderId"),y, sumCount, sumPrice, oaddress, 0);
    
    //将当前用户的购物车集合进行set设置
    order.setList(cartByUsersid);
    //实例化biz
    IOrderBiz iob=new OrderBiz();
    //最佳方案:将购物车商品集合作为order实体的属性进行传递
    iob.addOrder(order);

3、部分底层代码展示:

①、根据指定的表名和指定的主键字段获取最大ID

/**
   * 根据指定的表名和指定的主键字段获取最大ID
   */
  public int getTableMaxID(String tableName, String colName) {
    // 1.定义对应的三兄弟以及其他相关变量
    Connection con = null;
    PreparedStatement ps = null;
    ResultSet rs = null;
    String sql = "";
    // 2.给对应的对象及变量赋值
    try {
      // 获取连接
      con = DBHelper.getCon();
      // sql
      sql = "select nvl(max("+colName+"),0)+1 from "+tableName;
      // 执行sql语句
      ps = con.prepareStatement(sql);
      // 返回结果集
      rs = ps.executeQuery();
      // 遍历结果集
      if (rs.next()) {
        return rs.getInt(1);
      }
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      DBHelper.myClose(con, ps, rs);
    }
    // 3.返回结果
    return 0;
  }

②、点击提交过后增加一个订单项和订单详情以及清除购物车中结算的商品:

@Override
  public int addOrder(Order order) {
    int n=0;
    Connection con=null;
    PreparedStatement ps=null;
    String sql="";
    try {
      con=DBHelper.getCon();
      sql="insert into orders select nvl(max(orderid),0)+1 ,?,?,?,?,? from orders";
      //执行语句
      ps=con.prepareStatement(sql);
      ps.setInt(1, order.getY().getYid());
      ps.setInt(2, order.getNum());
      ps.setInt(3, order.getPrice());
      ps.setString(4, order.getOaddress());
      ps.setInt(5, order.getOstate());
      n=ps.executeUpdate();
      //生成订单详情
      if(n!=0) {
        //拿到购物车商品
        if(order.getList()!=null) {
          List<Cart> list = order.getList();
          for (Cart cart : list) {
            OrderItems orderItems=new OrderItems();
            //将这些商品保存到订单详情中
            //id--订单详情编号 不需要
            //orderId--订单编号
            orderItems.setOrder(order);
            //gid--商品编号
            orderItems.setGoods(cart.getG());
            //num--商品数量
            orderItems.setNum(cart.getCcount());
            //price--总价
            orderItems.setPrice(cart.getCtotal());
            ioid.addOrderItems(orderItems);
            
            //调用删除购物车的方法 根据用户删除
            //new CartDao.deleteCartGoodsByUsersid(userid);
            new CartDao().deleteCartGoodsByUser(order.getY().getYid());
          }
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }finally {
      DBHelper.myClose(con, ps, null);
    }
    return n;
  }

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值