订单详情功能(提交订单支付界面)

原理分析

步骤实现:

1、准备工作:order_list.jsp当中修改链接

提交当前订单编号

<a href="${pageContext.request.contextPath}/OrderServlet?method=findOrderByOid&oid=${o.oid}">付款</a>

2、OrderServlet —> findOrderByOid

获取订单的oid
调用业务层功能;根据订单编号查询订单信息
将订单放入request当中
转发到/jsp/order_info.jsp

OrderServlet当中实现该方法

// findOrderByOidpublic String findOrderByOid(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException, SQLException {//获取对应订单的oidString oid = request.getParameter("oid");//调用业务层功能:根据订单编号查询订单信息OrderService orderService = new OrderServiceImpl();Order order = null;try {order = orderService.findOrderByOid(oid);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}//将订单放入到request当中request.setAttribute("order", order);//转发到/jsp/order_info.jspreturn "/jsp/order_info.jsp";}

3、OrderService<->OrderServiceImpl

OrderService

Order findOrderByOid(String oid)throws Exception;

OrderServiceImpl

@Overridepublic Order findOrderByOid(String oid) throws Exception { OrderDao orderDao = new OrderDaoImpl();    return orderDao.findOrderByOid(oid);}

4、OrderDao<->OrderDaoImpl

OrderDao

Order findOrderByOid(String oid)throws Exception;

OrderDaoImpl
根据订单oid查询订单下所有的订单项以及订单项关联的商品

@Overridepublic Order findOrderByOid(String oid) throws Exception {// 根据订单oid查询订单以及对应的订单项,返回订单,其订单包括订单以及订单项的集合String sql = "select * from orders where oid = ?";QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());Order order = qr.query(sql, new BeanHandler<Order>(Order.class), oid);// 根据订单的id 查询订单下所有订单项以及所有的订单对应的商品信息sql = "select * from orderitem o,product p where o.pid=o.pid where and oid = ?";List<Map<String, Object>> list02 = qr.query(sql, new MapListHandler(), oid);// 获取到的是笛卡尔集的所有对应的商品集合// 遍历list集合for (Map<String, Object> map : list02) {// 实例化OrderItem orderItem = new OrderItem();Product product = new Product();// 由于BeanUtlis将字符串“1992-3-3”向user对象的setBithday();方法传递参数有问题,手动向BeanUtils注册一个时间类型转换器// 1、创建时间类型的转换器DateConverter dt = new DateConverter();// 2、设置转换的格式dt.setPattern("yyyy-MM-dd");// 3、注册转换器ConvertUtils.register(dt, Date.class);// 将Date对象设置为dt当中的格式try {// 将map中属于orderItem的数据自动填充到orderItem对象上BeanUtils.populate(orderItem, map);// 将map中属于product的数据自动填充到product对象上BeanUtils.populate(product, map);// 让每一个订单项和商品项发生关系orderItem.setProduct(product);// 将商品项当中的内容放到订单项当中order.getList().add(orderItem);// 将订单项放到订单当中的list集合当中} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvocationTargetException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return order;}



5、/jsp/order_info.jsp
开发中:多个功能对应同一个jsp页面,为了提供代码的复用率,所有的功能在向同一个jsp页面转发的时候,向request当中存入相同的数据(属性名一致)request.setAttribute(name,obj);

<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>
<!doctype html>
<html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1"><title>下订单</title><link rel="stylesheet" href="${pageContext.request.contextPath}/css/bootstrap.min.css" type="text/css" /><script src="${pageContext.request.contextPath}/js/jquery-1.11.3.min.js" type="text/javascript"></script><script src="${pageContext.request.contextPath}/js/bootstrap.min.js" type="text/javascript"></script><!-- 引入自定义css文件 style.css --><link rel="stylesheet" href="${pageContext.request.contextPath}/css/style.css" type="text/css"/><style>body {margin-top: 20px;margin: 0 auto;}.carousel-inner .item img {width: 100%;height: 300px;}</style></head><body>  <!--描述:菜单栏--><%@include file="/jsp/header.jsp" %><div class="container"><div class="row"><div style="margin:0 auto;margin-top:10px;width:950px;"><strong>订单详情</strong><table class="table table-bordered"><tbody><tr class="warning"><th colspan="5">订单编号:${order.oid } </th></tr><tr class="warning"><th>图片</th><th>商品</th><th>价格</th><th>数量</th><th>小计</th></tr><c:forEach items="${order.list }" var="item"><tr class="active"><td width="60" width="40%"><input type="hidden" name="id" value="22"><img src="${pageContext.request.contextPath}/${item.product.pimage}" width="70" height="60"></td><td width="30%"><a target="_blank">${item.product.pname}</a></td><td width="20%">${item.product.shop_price}</td><td width="10%">${item.quantity}</td><td width="15%"><span class="subtotal">${item.total}</span></td></tr></c:forEach></tbody></table></div><div style="text-align:right;margin-right:120px;">商品金额: <strong style="color:#ff6600;">¥${order.total }元</strong></div></div><div><hr/><form class="form-horizontal" style="margin-top:5px;margin-left:150px;"><div class="form-group"><label for="username" class="col-sm-1 control-label">地址</label><div class="col-sm-5"><input type="text" class="form-control" id="username" placeholder="请输入收货地址"></div></div><div class="form-group"><label for="inputPassword3" class="col-sm-1 control-label">收货人</label><div class="col-sm-5"><input type="password" class="form-control" id="inputPassword3" placeholder="请输收货人"></div></div><div class="form-group"><label for="confirmpwd" class="col-sm-1 control-label">电话</label><div class="col-sm-5"><input type="password" class="form-control" id="confirmpwd" placeholder="请输入联系方式"></div></div></form><hr/><div style="margin-top:5px;margin-left:150px;"><strong>选择银行:</strong><p><br/><input type="radio" name="pd_FrpId" value="ICBC-NET-B2C" checked="checked" />工商银行<img src="${pageContext.request.contextPath}/img/bank_img/icbc.bmp" align="middle" />&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" name="pd_FrpId" value="BOC-NET-B2C" />中国银行<img src="${pageContext.request.contextPath}/img/bank_img/bc.bmp" align="middle" />&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" name="pd_FrpId" value="ABC-NET-B2C" />农业银行<img src="${pageContext.request.contextPath}/img/bank_img/abc.bmp" align="middle" /><br/><br/><input type="radio" name="pd_FrpId" value="BOCO-NET-B2C" />交通银行<img src="${pageContext.request.contextPath}/img/bank_img/bcc.bmp" align="middle" />&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" name="pd_FrpId" value="PINGANBANK-NET" />平安银行<img src="${pageContext.request.contextPath}/img/bank_img/pingan.bmp" align="middle" />&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" name="pd_FrpId" value="CCB-NET-B2C" />建设银行<img src="${pageContext.request.contextPath}/img/bank_img/ccb.bmp" align="middle" /><br/><br/><input type="radio" name="pd_FrpId" value="CEB-NET-B2C" />光大银行<img src="${pageContext.request.contextPath}/img/bank_img/guangda.bmp" align="middle" />&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" name="pd_FrpId" value="CMBCHINA-NET-B2C" />招商银行<img src="${pageContext.request.contextPath}/img/bank_img/cmb.bmp" align="middle" /></p><hr/><p style="text-align:right;margin-right:100px;"><a href="javascript:document.getElementById('orderForm').submit();"><img src="${pageContext.request.contextPath}/img/finalbutton.gif" width="204" height="51" border="0" /></a></p><hr/></div></div></div><%@include file="footer.jsp" %> </body>
</html>

Java Web 网络商城案例演示十五 订单详情功能(提交订单支付界面)相关推荐

  1. Java Web 网络商城案例演示十六 订单详情功能(支付功能的实现使用易付宝)

    sValue.append(p3_Amt); // 交易币种 sValue.append(p4_Cur); // 商品名称 sValue.append(p5_Pid); // 商品种类 sValue. ...

  2. Java Web 网络商城案例演示五(用户激活)

    Java Web 网络商城案例演示五(用户激活) 1.用户激活 2.登录 3.退出 4.抽取公共页面 5.查询所有分类 6.首页热门商品_最新商品显示 7.商品详情显示 8.基础分页操作 9.首页分类 ...

  3. Java Web 网络商城案例演示一、(环境搭建)

    一.数据库建立 分析以及创建数据库 -- 创建数据库 drop database if exists `store_40`; create database `store_40`; -- 使用数据库 ...

  4. Java Web应用小案例:猜数小游戏

    Java Web应用小案例:猜数小游戏 文章目录 一.演示Python版猜数游戏 二.JSP版猜数游戏程序运行效果

  5. Java Web应用小案例:查询城市天气信息

    Java Web应用小案例:查询城市天气信息 本期上大数据1班动态网站设计与开发课,经过半期的学习,学生已经可以利用所学的JSP知识开发简单的基于后台数据库操作的动态网站,但是这是远远不够的,课程教学 ...

  6. 【零基础学Java】—System类(三十五)

    [零基础学Java]-System类(三十五) java.lang.System 类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作 在System类的API文档中,常用的方法有: pub ...

  7. Java Web项目实战案例一

    Java Web项目实战案例一 一.主要开发工具如下: 1.物理机:windows 10 2.apache-maven-3.5.3 3.jdk1.8.0_161 4.Intellij 二.构建过程 项 ...

  8. java web网上商城项目实战与源码

    java web网上商城项目实战与源码 点击这里,轻松完成毕设https://x-x.fun/i/AAbf595445aBT

  9. 【Hadoop/Java】基于HDFS的Java Web网络云盘

    [Hadoop/Java]基于HDFS的Java Web网络云盘 本人BNUZ大学生萌新,水平不足,还请各位多多指教! 实验目的 熟悉HDFS Java API的使用: 能使用HDFS Java AP ...

最新文章

  1. python正则表达式_Python正则表达式简记和re库!
  2. 利用BADI ME_PROCESS_PO_CUST進行PO check
  3. Linux CentOS7 下安装 TeamViewer
  4. mysql插入blob报错_java如何向mysql写入blob数据?
  5. 软件项目管理和软件工程的区别
  6. 周末阴雨 在家无事 观《孔子》
  7. C语言 删除单链表中值为e的全部元素
  8. Python 使用乐动体育的 backoff 更优雅的实现轮询
  9. SVG排版 | 深色模式彩蛋
  10. Ps制作食物网站展示
  11. 近几年安防工程商面临的困境
  12. ECIF OCRM ACRM
  13. 【目录】全志F1C100S/F1C200S学习笔记
  14. 黑盒测试方法之正交实验法
  15. Android网络编程面试题集
  16. pyplot绘制图片_使用matplotlib的pyplot模块绘图的实现示例
  17. 7亿人养活的眼镜行业,容不下一家县城小店
  18. 百度大脑助力旅游场景智能解决方案落地
  19. 计算机语言混淆,Armariris: 孤挺花(Armariris) -- 由上海交通大学密码与计算机安全实验室维护的LLVM混淆框架...
  20. wasm与canvas交互

热门文章

  1. html5地图编辑器,Tiled地图编辑器 Tiled Map Editor 的使用(一)基础功能+地形功能...
  2. 【JS学习】数组过滤方法的使用filter
  3. 个人ip如何运营?如何打造自己的个人ip?具体好处有哪些?
  4. CL210管理OPENSTACK网络--开放虚拟网络(OVN)简介
  5. 解读数据处理白皮书、共话核心软件创新,软博会又一主题论坛拉开帷幕!
  6. Kinect for Windows SDK v2.0 开发笔记 (十二) 高清面部帧(3) 面部模型(2D)
  7. sws_kp操作(selenium webdriver+python)
  8. 面试题:重写equals方法为什么通常会重写hashcode方法?
  9. STM32的频率和占空比计算
  10. oppor15android10怎么降级,OPPO R15系统降级教程_OPPO R15怎么回退到原来旧版本系统