JavaWeb - 小米商城 :提交订单(上篇)

本文详细介绍了在JavaWeb环境下,如何实现小米商城从购物车提交订单的整个流程,包括前端页面的交互和后端数据处理。在用户点击生成订单后,首先检查用户是否已登录,接着获取购物车数据创建订单和订单详情,并存储到数据库。同时展示了订单预览、支付提示、订单列表和订单详情等关键页面的实现。在后端,通过Servlet、Service、Dao层进行逻辑处理,使用事务控制确保数据一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaWeb - 小米商城 :创建订单

1.功能描述

接上篇 JavaWeb - 小米商城:商品添加到购物车 本篇博客将分析和实现小米商城通过购物车提 交。如以下H5页面所示:

购物车界面

通过购物界面点击生成订单按钮,依据购物车数据创建订单信息

在这里插入图片描述

订单预览界面

订单创建成功, 显示订单预览界面, 在预览界面可以显示和添加收货地址

在这里插入图片描述

支付提示界面:

当点击提交订单, 此时将订单数据存储到数据表

在这里插入图片描述

支付宝支付:

一般的开发中使用的是沙箱做模拟支付

在这里插入图片描述

我的订单列表:

支付成功可以通过点击我的订单查看订单列表

在这里插入图片描述

订单详情界面

通过点击订单列表中订单详情按钮打开该

在这里插入图片描述

2.提交功能分析

2.1 功能逻辑抽象

商品购物车成功点击生成订单时, 先判断一行是否登录, 如果用户没有登录, 则需要用户先完成登录, 获取到用户对象 , 然后从session中取得购物车数据, 根据购物车数据创建订单对象和订单详情List集合数据

商品购物车是面向数据库中的tb_cart表, 订单面向的是tb_order表和订单详情表tb_orderdetail, 在订单预览页面添加数据到对应的表, 在开发时基于三层架构体系购物车建立对应的CartServlet类, CartService接口和实现类, CartDao接口和实现类, 订单建立对应的OrderServlet类, OrderService接口和实现类, OrderDao接口和实现类, 订单建立对应的OrderDetailServlet类, OrderDetailService接口和实现类, OrderDetaDao接口和实现类

提示: 还需要创建辅助的vo类

OdersView : oid,uid,orderTime,userName,telphon,address,totalMoney,ostate

GoodOdersDeailVo : pid,pimg,pname,star,pubdate,price,num,money

3.代码实现

3.1前端

3.1.1修改购物车中添加收货地址a链接地址

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PxDcWEq9-1652785135869)(修改跳转连接.png)]

3.1.2修改order.html代码
   <script type="text/javascript">
        $(function () {
     
     
            $("#btn_add").click(function () {
     
     
                location.href = "order.do?action=generateOrder&aid=" + $("#address").val();
            })
        })
        $(document).ready(function () {
     
     
            //获取购物车的session数据显示到页面
            $.get("cart.do?action=showCart", "", function (result) {
     
     
                if (result.flag === true) {
     
     
                    var sum = 0;//计算总金额变量
                    var index = 1;
                    for (var i in result.data) {
     
     
                        var tbhtm ='<tr>' +
                            '<td>' + index + '</td>' +
                            '<td>' + result.data[i].goodsName + '</td>' +
                            '<td>¥&nbsp;' + result.data[i].price + '</td>' +
                            '<td>' + result.data[i].quantity + '</td>' +
                            '<td>¥&nbsp;' + result.data[i].subtotal + '</td>' +
                            '</tr>';
                        index++;
                        sum += result.data[i].subtotal;
                        $("#cartBody").append(tbhtm);
                    }
                    //显示总计
                    $("#total").html("<b>¥&nbsp;&nbsp;" + sum + "</b>");
                }
            });
            //获取地址列表的数据显示到页面
            $.get("address.do?action=showAddress", "", function (result) {
     
     
                var addStr = '';
                var address = '<tr>' +
                    '<td colspan="5">' +
                    '<h5>收货地址</h5>' +
                    '<select id="address" style="width:60%" class="form-control">';
                if (result.flag === true) {
     
     
                    for (var i in result.data) {
     
     
                        address += '<option value="' + result.data[i].id + '">' +
                            result.data[i].name + '&nbsp;&nbsp;' + result.data[i].phone + '&nbsp;&nbsp;' +
                            result.data[i].detail + '</option>';
                    }
                } else {
     
     
                    addStr = '<a href="self_info.html">添加收货地址</a>';
                }
                address += '</select>' + addStr + '</td>' + '</tr>';
                $("#addressFoot").append(address);
            });
        });
    </script>
    <script type="text/javascript" src="js/includeHeader.js"></script>
</head>
<body style="background-color:#f5f5f5">
<div id="headtop">
</div>
<div class
import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class system extends JFrame { JDesktopPane deskpane = new JDesktopPane();//在窗体里建立虚拟桌 JPanel p = new JPanel();//创建一个面板并实例化 public system(){//构造函数 setTitle("订单管理系统");//设置窗体标题 Container con = getContentPane(); con.setLayout(new BorderLayout());//创建一个布局 con.add(deskpane,BorderLayout.CENTER);//实例虚拟桌面的布局 Font f =new Font("新宋体",Font.PLAIN,12); JMenuBar mb = new JMenuBar();//实例化菜单栏 mb.setOpaque(true); setJMenuBar(mb); mb.setOpaque(true); setJMenuBar(mb); JMenu systemM = new JMenu("系统管理"); systemM.setFont(f); mb.add(systemM); JMenuItem land = new JMenuItem("重新登陆"); land.setFont(f); JMenuItem exit = new JMenuItem("退出系统"); exit.setFont(f); systemM.add(land); systemM.add(exit); JMenu userM = new JMenu("用户管理"); userM.setFont(f); mb.add(userM); JMenuItem password = new JMenuItem("密码修改"); password.setFont(f); JMenuItem addDelete = new JMenuItem("添加/删除用户"); addDelete.setFont(f); userM.add(password); userM.add(addDelete); JMenu mesM = new JMenu("信息管理"); mesM .setFont(f); mb.add(mesM ); JMenu addM= new JMenu("添加信息"); addM.setFont(f); JMenu viewM = new JMenu("查看信息"); viewM.setFont(f); JMenu modifM = new JMenu("修改信息"); modifM.setFont(f); JMenu deleteM = new JMenu("删除信息"); deleteM.setFont(f); mesM.add(addM); mesM.add(viewM); mesM.add(modifM); mesM.add(deleteM); JMenuItem addgoods = new JMenuItem("添加商品信息"); addgoods.setFont(f); addM.add(addgoods); JMenuItem addclient = new JMenuItem("添加客户信息"); addclient.setFont(f); addM.add(addclient); JMenuItem viewgoods= new JMenuItem("查看商品信息"); viewgoods.setFont(f); viewM.add(viewgoods); JMenuItem viewclient = new JMenuItem("查看客户信息"); viewclient.setFont(f); viewM.add(viewclient); JMenuItem modifgoods = new JMenuItem("修改商品信息"); modifgoods.setFont(f); modifM.add(modifgoods); JMenuItem modifclient = new JMenuItem("修改用户信息"); modifclient.setFont(f); modifM.add(modifclient); JMenuItem deletegoods = new JMenuItem("删除商品信息"); deletegoods.setFont(f); deleteM.add(deletegoods); JMenuItem deleteclient = new JMenuItem("删除用户信息"); deleteclient.setFont(f); deleteM.add(deleteclient); JMenu orderM = new JMenu("订单管理"); orderM.setFont(f); mb.add(orderM); JMenuItem addO= new JMenuItem("添加订单"); addO.setFont(f); JMenuItem viewO = new JMenuItem("查看订单"); viewO.setFont(f); JMenuItem modifO = new JMenuItem("修改订单"); modifO.setFont(f); JMenuItem deleteO = new JMenuItem("删除订单"); deleteO.setFont(f); orderM.add(addO); orderM.add(viewO); orderM.add(modifO); orderM.add(deleteO); //主界面上标出学号、姓名、及所作系统名 JLabel jlabel1=new JLabel(); jlabel1.setFont(new Font("宋体",Font.BOLD,15)); //设置字体 jlabel1.setHorizontalAlignment(SwingConstants.CENTER); //设置位置 jlabel1.setText("简易订单管理系统学号:070810228" + " 姓名:廖太春指导老师:周老师"); jlabel1.setBounds(450,350, 200, 200); deskpane.add(jlabel1); password.addActionListener(new ActionListener(){//密码修改监听 public void actionPerformed(ActionEvent e){ System.out.println("修改密码"); deskpane.add(new modifpsw()); } }); land.addActionListener(new ActionListener(){//重新登陆监听 public void actionPerformed(ActionEvent e){ System.out.println("登录"); setVisible(false); new Land(); } }); addDelete.addActionListener(new ActionListener(){//添加/删除用户监听 public void actionPerformed(ActionEvent e){ deskpane.add(new AddDeleteUser()); } }); addgoods.addActionListener(new ActionListener(){//添加商品信息 public void actionPerformed(ActionEvent e){ deskpane.add(new addgoods()); } }); addclient.addActionListener(new ActionListener(){//添加用户信息 public void actionPerformed(ActionEvent e){ deskpane.add(new addclient()); } }); viewgoods.addActionListener(new ActionListener(){//查看商品信息 public void actionPerformed(ActionEvent e){ System.out.println("查看商品信息"); deskpane.add(new viewgoods()); } }); viewclient.addActionListener(new ActionListener(){//查看客户信息 public void actionPerformed(ActionEvent e){ System.out.println("查看客户信息"); deskpane.add(new viewclient()); } }); modifgoods.addActionListener(new ActionListener(){//修改商品信息 public void actionPerformed(ActionEvent e){ System.out.println("修改商品信息"); deskpane.add(new modifgoods()); } }); modifclient.addActionListener(new ActionListener(){//修改用户信息 public void actionPerformed(ActionEvent e){ System.out.println("修改用户信息"); deskpane.add(new modifclient()); } }); deletegoods.addActionListener(new ActionListener(){//删除商品信息 public void actionPerformed(ActionEvent e){ System.out.println("删除商品信息"); deskpane.add(new deletegoods()); } }); deleteclient.addActionListener(new ActionListener(){//删除用户信息 public void actionPerformed(ActionEvent e){ System.out.println("删除用户信息"); deskpane.add(new deleteclient()); } }); addO.addActionListener(new ActionListener(){//添加订单 public void actionPerformed(ActionEvent e){ deskpane.add(new addO()); } }); viewO.addActionListener(new ActionListener(){//查看订单 public void actionPerformed(ActionEvent e){ deskpane.add(new viewO()); } }); modifO.addActionListener(new ActionListener(){//修改订单 public void actionPerformed(ActionEvent e){ System.out.println("修改订单"); deskpane.add(new modifO()); } }); deleteO.addActionListener(new ActionListener(){//删除订单 public void actionPerformed(ActionEvent e){ System.out.println("/删除订单"); deskpane.add(new deleteO()); } }); exit.addActionListener(new ActionListener(){//退出系统监听 public void actionPerformed(ActionEvent e){ setVisible(false); } }); this.setBounds(200,200,700,600); setVisible(true); } public static void main(String[] args){ new Land(); } }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值