常规一个商品一个订单

多个商品一个订单

订单只有提交才能结算


付款页面




代码实现,主要是Servlet代码和Service业务层的代码,此处业务层,对多个dao的操作更为明显,体现业务二字!!!

package com.cart.web;

import java.io.IOException;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.cart.entity.Order;
import com.cart.entity.Userinfo;
import com.cart.service.OrderService;

public class OrderServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		//1.业务,将购物车中的数据删除,同时增加数据进订单表和订单详情表;
		String[]bids=req.getParameterValues("bid");
		StringBuilder sbbid=new StringBuilder();
		for(String bid:bids){
			sbbid.append(bid+",");
		}

		String sbid=sbbid.substring(0,sbbid.length()-1);

		//已经获取了你复选框的订单,到商品id数组中,此处是bids(大家可以是pids/gids等)
		OrderService orderService=new OrderService();

		Order order=new Order();
		Userinfo user=(Userinfo)req.getSession().getAttribute("userinfo");
		order.setUserid(user.getId());
		order.setContactphone(user.getPhone());
		order.setCreatetime(new Date());
		order.setTotal(Double.parseDouble(req.getParameter("total")));
		order.setShipaddress(user.getAddress());
		order.setStatus("未发货");

		//orderService.insertOrder(order); //保存订单;
		//让service继续去执行保存订单的操作;

		orderService.delCartAndSaveOrder(sbid,user,order);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		this.doGet(req, resp);
	}
}

package com.cart.service;

import java.sql.*;
import com.cart.dao.*;
import com.cart.dao.impl.*;
import com.cart.entity.Order;
import com.cart.entity.Userinfo;
import com.cart.util.DaoFactory;

public class OrderService {
	//1.定义属性:对dao进行操作;
	OrderDao orderDao=new OrderDaoImpl();
	CartDao cartDao=new CartDaoImpl();
	//2.对订单,进行增删该查
	public void delCartAndSaveOrder(String sbid,Userinfo user,Order order){
		//使用事务操作,业务层可以这样操作,对不同的dao操作;
		Connection con=null;
		PreparedStatement pstmt=null;
		try{
			StringBuilder sbSql=new StringBuilder();
			sbSql.append("delete from cartitem where uid=? and bid in(");
			sbSql.append(sbid);
			sbSql.append(")");
			String sql=sbSql.toString();

			con=DaoFactory.getConnection();
			pstmt=con.prepareStatement(sql);
			con.setAutoCommit(false);//设置自动提交事务,为false
			orderDao.insertOrder(order);//调用插入订单方法;,同时删除原来的购物车数据方法;
			Object[] params={user.getId()};
			DaoFactory.setParams(pstmt, params);
			DaoFactory.executeUpdate(sql, params);

			//System.out.println(sbSql);

			con.commit();

		}catch(Exception e){
			e.printStackTrace();
		}finally{
			DaoFactory.closeAll(null, null, con);
		}
	}
	public int insertOrder(Order order){
		//ct.deletecartItem(uid, bid);
		return orderDao.insertOrder(order);
	}
	public int updateOrder(int id){
		return orderDao.updateOrder(id);
	}
	public int deleteOrder(int id){
		return orderDao.deleteOrder(id);
	}

	public Order findOrderById(int id){
		return orderDao.findOrderById(id);
	}
}

jsp电子商务系统之六 订单篇1的更多相关文章

  1. ecshop二次开发 使用ecshop电子商务系统的100个小问题

    自己从事B4C电子商务开发一段时间了,特别对ecshop深有体会,刚接触的时候不容易理解,下面将根据自己的经验,来总结100条关于操作ecshop电子商务系统的小问题. 1:如何修改网站"欢 ...

  2. B2C电子商务系统研发——商品SKU分析和设计(二)

    转:http://www.cnblogs.com/winstonyan/archive/2012/01/07/2315886.html 上文谈到5种商品SKU设计模式,本文将做些细化说明. 笔者研究过 ...

  3. ASP.NET之电子商务系统开发-4(二级分类)

    一.前言 继上次的订单,这是第四篇.记录一下分类和筛选.这功能是最后做的,因为我完全不懂其原理.后来通过同学的指导(一位很有天赋的同学,比我牛逼一个层次,同样是高三.:D),终于也是完成了.在写这篇博 ...

  4. 基于Mvc3,Ef,领域驱动电子商务系统的EShop开发

    分享自己从代码小工一步步走向搭架子,ING... 简单了解UnitOfWork 摘要: UnitOfWorkUnit Of Work模式,即工作单元,它是一种数据访问模式.它是用来维护一个由已经被业务 ...

  5. 30个开源电子商务系统(PHP)

    osCommerce osCommerce是一款著名的PHP开源电子商务解决方案,提出“开箱即用”的强大功能,使网上商店安装非常方便快捷,并可以作为GNU通用公共授权的开源项目免费发布.osComme ...

  6. 基于jeesite+android开发 电子商务系统免费教程

    下载地址: jeesite免费教程 基于jeesite+android开发 电子商务系统免费教程 基于jeesite+android开发 电子商务系统免费教程 这个教程已经录制完很久了,一直没有公开, ...

  7. 转:国内外著名开源b2c电子商务系统比较包括asp.net和php

    from: http://longdick.iteye.com/blog/1122879 国内外著名开源b2c电子商务系统比较包括asp.net和php 博客分类: 电子商务   国内外著名开源b2c ...

  8. 换站点Logo图片---轻开电子商务系统(企业入门级B2C站点)

    一共2个文件: 显示及上传文件:site/links/img_logo.html 保存图片文件:site/links/img_logo_up1.chtml 在轻开电子商务系统(企业入门级B2C站点)的 ...

  9. 换今日特价图片---轻开电子商务系统(企业入门级B2C站点)

    跟换主页轮播图片一样,一共4个文件: 列表显示文件:site/links/img2.html 加入图片文件:site/links/img2_add.html 加入保存图片文件:site/links/i ...

随机推荐

  1. hdu1176免费馅饼(动态规划,数塔)

    免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  2. [转载]Java集合框架的常见面试题

    http://www.jfox.info/40-ge-java-ji-he-lei-mian-shi-ti-he-da-an 整理自上面链接: Java集合框架为Java编程语言的基础,也是Java面 ...

  3. kvm网络虚拟化

    网络虚拟化是虚拟化技术中最复杂的部分,学习难度最大. 但因为网络是虚拟化中非常重要的资源,所以再硬的骨头也必须要把它啃下来. 为了让大家对虚拟化网络的复杂程度有一个直观的认识,请看下图 这是 Open ...

  4. 使用树莓派实现(山寨)高清视频叠加(HDMI OSD)

    项目需要在HDMI上叠加一些字符包括汉字和数值,要求不能使用台式机,本身也没有HDMI采集卡驱动开发能力,所以通过海思的HDMI编码器将HDMI编码为h.264网络视频流,然后通过树莓派解码显示,做字 ...

  5. JavaScript筑基篇(二)->JavaScript数据类型

    说明 介绍JavaScript数据类型 目录 前言 参考来源 前置技术要求 JavaScript的6种数据类型 哪6种数据类型 undefined 类型 null 类型 boolean 类型 numb ...

  6. Html5 input placeholder 属性字体颜色修改。

    这篇文章主要介绍了有关HTML5 input placeholder 颜色修改方面的知识,需要的朋友可以参考下     Chrome支持input=[type=text]占位文本属性,但下列CSS样式 ...

  7. 冲刺ing-1

    冲刺一 1.第一天的工作分配: 姓名 任务分工 吴伟华(队长) 布置团队任务,发表汇总博客及第一次冲刺博客 蔺皓雯 讨论任务分配 杨池宇 讨论任务分配 鲁婧楠 讨论任务分配 曾茜 讨论任务分配 蔡晨旸 ...

  8. 福大软工1816:Alpha(10/10)

    Alpha 冲刺 (10/10) 队名:第三视角 组长博客链接 本次作业链接 团队部分 团队燃尽图 工作情况汇报 张扬(组长) 过去两天完成了哪些任务: 文字/口头描述: 1.和愈明.韫月一起对接 2 ...

  9. 《剑指offer》---丑数

    本文算法使用python3实现 1. 问题1 1.1 题目描述:   把只包含因子2.3和5的数称作丑数(Ugly Number).判断一个数是否是丑数.   时间限制:1s:空间限制:32768K ...

  10. Apriori算法详解

    一.Apriori 算法概述Apriori 算法是一种最有影响力的挖掘布尔关联规则的频繁项集的 算法,它是由Rakesh Agrawal 和RamakrishnanSkrikant 提出的.它使用一种 ...