实现提交订单的功能

article/2025/8/20 14:25:00

根据购物车中的商品名称和数量生成了结算信息,并可以填写收货人姓名、联系电话和收货地址,本任务将实现提交订单的功能。

 一、创建订单页面order.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="p" uri="http://www.itcast.cn/tag"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head><title>电子书城</title><link rel="stylesheet" href="${pageContext.request.contextPath}/client/css/main.css" type="text/css" /><script type="text/javascript" src="${pageContext.request.contextPath}/client/js/order.js"></script>
</head>
<body class="main"><p:user/><jsp:include page="head.jsp" /><jsp:include page="menu_search.jsp" /><div id="divpagecontent"><table width="100%" border="0" cellspacing="0"><tr><td><div style="text-align:right; margin:5px 10px 5px 0px"><a href="${pageContext.request.contextPath }/index.jsp">首页</a>&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;<a href="${pageContext.request.contextPath}/client/cart.jsp">&nbsp;购物车</a>&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;订单</div><form id="orderForm" action="${pageContext.request.contextPath}/createOrder" method="post"><table cellspacing="0" class="infocontent"><tr><td><table width="100%" border="0" cellspacing="0"><tr><td><img src="images/buy2.gif" width="635" height="38" /><p>你好,${user.username}!欢迎您来到网上书城结算中心</p></td></tr><tr><td><table cellspacing="1" class="carttable"><tr><td width="10%">序号</td><td width="40%">商品名称</td><td width="10%">价格</td><td width="10%">类别</td><td width="10%">数量</td><td width="10%">小计</td></tr></table> <c:set value="0" var="totalPrice"/><c:forEach items="${cart}" var="entry" varStatus="vs"><table width="100%" border="0" cellspacing="0"><tr><td width="10%">${vs.count}</td><td width="40%">${entry.key.name }</td><td width="10%">${entry.key.price }</td><td width="10%">${entry.key.category}</td><td width="10%"><input name="text" type="text" value="${entry.value}" style="width:20px" readonly="readonly"/></td><td width="10%">${entry.key.price*entry.value}</td></tr></table><c:set var="totalPrice" value="${totalPrice+entry.key.price*entry.value}"/></c:forEach><table cellspacing="1" class="carttable"><tr><td style="text-align:right; padding-right:40px;"><fontstyle="color:#FF0000">合计:&nbsp;&nbsp;${totalPrice}元</font><input type="hidden" name="money" value="${totalPrice}"></td></tr></table><p>收货地址:<input id="receiverAddress" name="receiverAddress" type="text" value=""style="width:350px" onkeyup="checkReceiverAddress();" />&nbsp;&nbsp;&nbsp;&nbsp;<span id="receiverAddressMsg"></span><br/>收货人:&nbsp;&nbsp;&nbsp;&nbsp;<input id="receiverName" name="receiverName" type="text" value="${user.username}" style="width:150px" onkeyup="checkReceiverName();" /><span id="receiverNameMsg"></span>&nbsp;&nbsp;&nbsp;&nbsp;<br/> 联系方式:<input type="text" id="receiverPhone" name="receiverPhone" value="${user.telephone}" style="width:150px" onkeyup="checkReceiverPhone();" /><span id="receiverPhoneMsg"></span>&nbsp;&nbsp;&nbsp;&nbsp;</p><hr /><p style="text-align:right"><img src="images/gif53_029.gif" width="204" height="51" border="0" onclick="checkOnSubmit();"/></p></td></tr></table></td></tr></table></form></td></tr></table></div><jsp:include page="foot.jsp" />
</body>
</html>

二、创建CreateOrderServlet

//生成订单
public class CreateOrderServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 1.得到当前用户HttpSession session = request.getSession();User user = (User) session.getAttribute("user");// 2.从购物车中获取商品信息Map<Product, Integer> cart = (Map<Product, Integer>)session.getAttribute("cart");// 3.将数据封装到订单对象中Order order = new Order();try {BeanUtils.populate(order, request.getParameterMap());} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}order.setId(IdUtils.getUUID());// 封装订单idorder.setUser(user);// 封装用户信息到订单.for (Product p : cart.keySet()) {OrderItem item = new OrderItem();item.setOrder(order);item.setBuynum(cart.get(p));item.setP(p);order.getOrderItems().add(item);}System.out.println(order);// 4.调用service中添加订单操作.OrderService service = new OrderService();service.addOrder(order);
//		request.getRequestDispatcher("/client/orderlist.jsp").forward(request, response);response.sendRedirect(request.getContextPath() + "/client/createOrderSuccess.jsp");}}

需要注意的是,在进行生成订单时,不仅需要把订单信息保存到订单表,还需要将订单项保存到订单条目表,并且修改商品表中该商品的库存数量。


http://chatgpt.dhexx.cn/article/nOoZyOMD.shtml

相关文章

美多商城项目:结算订单与提交订单

一、结算订单 1. 结算订单逻辑分析 结算订单是从Redis购物车中查询出被勾选的商品信息进行结算并展示。 2. 结算订单接口设计和定义 1.请求方式 选项方案请求方法GET请求地址/orders/settlement/ 3. 结算订单后端逻辑实现 class OrderSettlementView(LoginRequiredMixin, Vie…

电商系统-提交订单并发处理

在多个用户同时发起对一个商品的下单请求时&#xff0c;先查询商品库存&#xff0c;再修改商品库存&#xff0c;会出现资源竞争问题&#xff0c;导致库存的最终结果出现异常。 1、并发下单问题演示 每个不同的用户在程序上&#xff0c;我们可以理解成不同的线程&#xff0c;每…

Android Studio_Toast消息提醒

Android Studio_Toast消息提醒 1、Toast是Android系统提供的一种非常简洁的消息提醒方式&#xff0c;程序中可以使用它实现将短小的消息通知给用户&#xff0c;一点时间后自动消失&#xff0c;且不占用屏幕的任何空间。 2、Toast用法其实非常简单&#xff0c;通过静态方法make…

Vue 消息提示通知的几种方式汇总

Vue 消息提示通知组件&#xff08;Message /Notification&#xff09;是我们日常开发中经常使用的组件&#xff0c;它可用作与用户交互的反馈提示&#xff0c;信息提交成功、错误、操作警告等场景使用。原生JavaScript 提供了 alert、prompt、confirm 等方法 提示框1>Messag…

java信息提醒怎么实现_jsp怎么实现消息提醒

如果你是平台级别的系统,可以考虑消息队列的中间件,例如:阿里巴巴的rocketmq,用这个来做消息订阅与分发。 如果你只是简简单单的需要提示到web(jsp)页面,可以用js定时ajax访问后台,后台来确定是否有数据更新,无论这个数据是哪来的。 推荐课程:Java教程。 这里就使用在JSP页面…

RabbitMQ真延时队列实现消息提醒功能

RabbitMQ真延时队列实现消息提醒功能 一、需求场景 用户可以制定多个计划&#xff0c;同时可给该计划设置是否需要到点提醒&#xff0c;且中途可以取消提醒或修改提醒时间。 二、需要解决的问题 学习过rabbitmq的同学们都知道&#xff0c;通过TTL死信队列可以实现延时队列的…

企业微信 消息 html,企业微信怎么设置消息提醒

企业微信是一款非常不错的办公软件&#xff0c;用户加入企业群就能实时了解企业的动态。而且大家只需设置消息提醒&#xff0c;软件就会在第一时间通知你&#xff0c;不会让你错过任何重要的消息&#xff0c;下面小编为大家带来相关的设置教程。 方法/步骤分享&#xff1a; 1、…

vue websocket 新消息提醒

概述&#xff1a; 不是当前聊天&#xff0c;有其他消息来就通过2种方式接受到提醒。在连接的上下文中判断&#xff0c;符合条件的弹框&#xff0c;显示红点&#xff0c;此处调用了element弹框组件列表点击事件&#xff0c;红点消失列表显示&#xff0c;属性中包含小红点 前提…

html5载入提示音,html5新消息提示声音

【实例简介】 【实例截图】 【核心代码】HTML5手机声音提示 #chatBox{width:400px;border:1px solid #d3d3d3;margin:50px auto;} #chat {max-height:220px;overflow-y:auto;max-width:400px;} #chat > ul > li{padding:3px;clear:both;padding:4px;margin:10px 0px 5px …

【Android】消息提示notification

notification 1、notification消息提示 由Android系统来管理和维护的&#xff0c;因此用户可以随时进入查看。某些信息不需要用户马上处理&#xff0c;可以利用通知&#xff0c;即延迟消息&#xff0c;比如软件的更新、短信、新闻等。 2、消息包含的内容 3、代码 <Button…

消息提醒系统:设计模式与实现方案 (公告(通告)、消息、提醒等基本功能数据库表设计与实现)

参考地址&#xff1a; 公告(通告),消息,提醒等基本功能数据库表设计_DamonREN的博客-CSDN博客 多种消息提醒系统的设计模式、实现方案&#xff08;附功能截图表结构&#xff09;_黑夜的风的博客-CSDN博客_消息提醒 设计一个百万级的消息推送系统 - crossoverJie - 博客园 案…

android开发 app消息提醒功能,APP消息提醒设计:ios和android的最佳设计方案 – 25学堂...

我们都知道APP一项重要功能就是消息推送,那么通知栏的设计极大程度上反应了这个APP是否合理,那如何可以方便地为用户展示各种通知内容。也就将是我们APP设计师跟APP产品经理重点思考的问题?也要关注移动APP布局设计经验之道! 自从去年发布的iOS5中也引入了这一功能,以替代…

vue浏览器消息提示

vue浏览器消息提示 JS部分 //判断浏览器是否支持浏览器消息弹窗 suportNotify() {if (window.Notification) {// 支持console.log("支持" "Web Notifications API");//如果支持Web Notifications API&#xff0c;再判断浏览器是否支持弹出实例this.show…

html如何设置提示收到消息,从零开始实现一个消息提示框

引言 消息提示框在实际应用场景当中比较常见,最常用的就是element ui的消息提示框,我们通常都是直接使用它们,但是我们有没有尝试过去探究其实现原理,并自己动手实现呢?为了提升我们的个人能力和竞争力,我们可以尝试来实现这样一个消息提示框。 实现效果 我们来查看一下最…

多种消息提醒系统的设计模式、实现方案(附功能截图+表结构)

网站需要增加3种消息提醒系统。需要实现的功能如下&#xff1a; 1.评论提醒。 实现功能 他人回复自己后&#xff0c;右上角自动提醒“未阅读的新消息”的数量。 点击后&#xff0c;清空新消息的提示。 思路 这个是最简单的。在数据库查询&#xff1a; select count(id) …

前端实现实时消息提醒消息通知

需求&#xff1a;当用户收到待审批和待处理的消息后状态栏图标闪烁并进行弹窗提醒&#xff0c;点击消息跳转到指定的消息。 实现方式&#xff1a;web端c端。 说明&#xff1a; 客户不需要非常的及时的接收消息&#xff0c;所以未对接websocket协议&#xff0c;使用20秒刷新一…

Win11任务栏消息提醒功能如何开启教学

Win11任务栏消息提醒功能如何开启教学。我们可以将电脑的消息提示功能开启起来&#xff0c;这样我们接收到各种程序的消息通知时&#xff0c;都可以通过这个功能及时的给出提示。那么Win11任务栏消息提醒功能如何开启&#xff0c;我们接下来看看具体的操作方法吧。 设置方法&am…

用户登录登出功能实现

用户登录登出功能实现 一、功能需求分析 1. 登录退出功能分析 流程图 功能 登录页面登录功能退出功能 二、登录页面 1. 接口设计 接口说明 类目说明请求方法GETurl定义/user/login/参数格式无参数 返回结果 登录页面 2.后端代码 user/views.py代码&#xff1a; fro…

xubuntu系统偶发自动登出

项目场景&#xff1a; 系统&#xff1a;xubuntu-16.04.3-desktop 问题描述 使用xubuntu系统期间&#xff0c;在root用户下进行相关开发&#xff0c;突然系统会回到普通用户登录界面&#xff0c;需要输入密码进入到普通用户下   它会终止所有打开的应用程序和进程&#xff0…

Spring Security OAuth2 单点登录和登出

文章目录 1. 单点登录1.1 使用内存保存客户端和用户信息1.1.1 认证中心 auth-server1.1.2 子系统 service-11.1.3 测试 1.2 使用数据库保存客户端和用户信息1.3 单点登录流程1.2.1 请求授权码&#xff0c;判断未登录&#xff0c;重定向登录页1.2.2 登录成功&#xff0c;重定向继…