【JavaWeb】网上蛋糕项目商城-我的订单,退出功能

概念

上一文中,我们实现了注册,登录,提交订单以及修改个人信息等功能。本文在登录的状态下,实现订单列表以及退出登录功能等。

我的订单

在head.jsp头部页面中,当用户处于登录状态,则会显示“我的订单”选项

点击“我的订单”后,触发超链接向服务器发送请求,因此需要在servlet包中创建OrderListServlet类,用于接收浏览器请求,查询当前用户的所有订单信息,并返回给浏览器显示

package servlet;import model.Order;
import model.User;
import service.OrderService;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;@WebServlet(name = "order_list", urlPatterns = "/order_list")
public class OrderListServlet extends HttpServlet {private OrderService oService = new OrderService();protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {User u = (User) request.getSession().getAttribute("user");if(u==null){response.sendRedirect("/index");return;}List<Order> list = oService.selectAll(u.getId());request.setAttribute("orderList", list);request.getRequestDispatcher("/order_list.jsp").forward(request, response);}
}

以上代码中,接收到浏览器的请求后,先判断session中是否存在user对象,也就是判断是否用户处于登录状态,如果未登录,则回到首页,处于登录状态,则将用户编号发送给业务逻辑层执行操作。

因此需要在OrderService类中定义对应方法

public List<Order> selectAll(int userid){List<Order> list=null;try {list = oDao.selectAll(userid);for(Order o :list) {List<OrderItem> l = oDao.selectAllItem(o.getId());o.setItemList(l);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return list;
}

以上代码中,通过用户编号传递给数据访问层dao层执行查询该用户的所有订单信息,但可能一个订单中包含多种商品的购买信息,因此还需要根据每一个订单编号获取当前这次订单中购买的所有商品信息。

因此需要在OrderDao类中定义对应的方法

public List<Order> selectAll(int userid) throws SQLException {QueryRunner r = new QueryRunner(DataSourceUtils.getDataSource());String sql = "select * from `order` where user_id=? order by datetime desc";return r.query(sql, new BeanListHandler<Order>(Order.class),userid);
}
public List<OrderItem> selectAllItem(int orderid) throws SQLException{QueryRunner r = new QueryRunner(DataSourceUtils.getDataSource());String sql = "select i.id,i.price,i.amount,g.name from orderitem i,goods g where order_id=? and i.goods_id=g.id";return r.query(sql, new BeanListHandler<OrderItem>(OrderItem.class),orderid);
}

最后将查询出来的订单信息发送给order_list.jsp页面进行展示

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head><title>我的订单</title><meta name="viewport" content="width=device-width, initial-scale=1"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><link type="text/css" rel="stylesheet" href="css/bootstrap.css"><link type="text/css" rel="stylesheet" href="css/style.css"><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/bootstrap.min.js"></script><script type="text/javascript" src="layer/layer.js"></script><script type="text/javascript" src="js/cart.js"></script>
</head>
<body><jsp:include page="header.jsp"><jsp:param name="flag" value="5"></jsp:param></jsp:include><div class="cart-items"><div class="container"><h2>我的订单</h2><table class="table table-bordered table-hover"><tr><th width="10%">ID</th><th width="10%">总价</th><th width="20%">商品详情</th><th width="30%">收货信息</th><th width="10%">订单状态</th><th width="10%">支付方式</th><th width="10%">下单时间</th></tr><c:forEach items="${orderList }" var="order"><tr><td><p>${order.id }</p></td><td><p>${order.total }</p></td><td><c:forEach items="${order.itemList }" var="item"><p>${item.goodsName }(${item.price }) x ${item.amount }</p></c:forEach></td><td><p>${order.name }</p><p>${order.phone }</p><p>${order.address }</p></td><td><p><c:if test="${order.status==2 }"><span style="color:red;">已付款</span></c:if><c:if test="${order.status==3 }"><span style="color:green;">已发货</span></c:if><c:if test="${order.status==4 }"><span style="color:black;">已完成</span></c:if></p></td><td><p><c:if test="${order.paytype==1 }">微信</c:if><c:if test="${order.paytype==2 }">支付宝</c:if><c:if test="${order.paytype==3 }">货到付款</c:if></p></td><td><p>${order.datetime }</p></td></tr></c:forEach></table></div></div><jsp:include page="footer.jsp"></jsp:include>
</body>
</html>

以上效果图中,当用户支付完成后,查看订单情况时,处于已付款状态,需要管理员【商家】进入后台管理系统进行发货后,用户从订单中查看到已完成状态。

退出功能

登录之后,在head.jsp头部页面中会出现退出选项,当点击退出后,会想服务器发送请求

因此在servlet包中创建UserLogoutServlet类,用于处理退出登录的操作

package servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet(name = "user_logout",urlPatterns = "/user_logout")
public class UserLogoutServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.getSession().removeAttribute("user");response.sendRedirect("/index");}
}

以上代码中,接收到浏览器的退出登录请求,需要从session中删除user对象,也就是清除用户的登录信息,然后回头首页。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/321771.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法-并查集

目录 什么是并查集 并查集基础 &#xff08;1&#xff09;原理 &#xff08;2&#xff09;初始化 &#xff08;3&#xff09;查询 &#xff08;4&#xff09;合并 &#xff08;5&#xff09;判断是否同一集合 并查集优化 路径压缩 启发式合并 并查集模板 模板 例题…

WPF之多种视图切换

1&#xff0c;View切换&#xff0c;效果呈现 视图1 视图2 视图3 2&#xff0c;在Xaml中添加Listview控件&#xff0c;Combobox控件。 <Grid ><Grid.RowDefinitions><RowDefinition Height"143*"/><RowDefinition Height"30"/>&l…

绘画作品3d数字云展厅提升大众的艺术鉴赏和欣赏能力

3D虚拟展厅作为未来艺术的展示途径&#xff0c;正逐渐成为文化创意产业蓬勃发展的重要引擎。这一创新形式不仅打破了传统艺术展览的局限性&#xff0c;更以其独特的魅力吸引着全球观众的目光。 3D虚拟艺术品展厅以其独特的魅力&#xff0c;助力提升大众的艺术鉴赏和欣赏能力。观…

【GROW教练模型】项目管理必会的思维分析工具12(附送模板,即拿即用)

分析解决问题的好工具——GROW模型 GROW对话模型是约翰惠特默建立的一个教练模型&#xff0c;简单说就是&#xff1a;通过一系列的提问&#xff0c;让你发现自己的目标是什么&#xff0c;现实状况是怎样&#xff0c;怎么样才能从现实抵达目标的彼岸。GROW 模型是教练技术中最常…

大字体学生出勤记录系统网页源码

大字体显示学生姓名和照片&#xff0c;让坐在最后排学生也能看清楚&#xff0c;显示姓名同时会语音播报姓名&#xff0c; 操作很简单&#xff0c;先导入学生姓名和照片&#xff0c;点击到课或未到课就能自动下一位&#xff0c; 并且记录出勤情况&#xff0c;点击导出记录就能…

JavaEE概述 + Maven

文章目录 一、JavaEE 概述二、工具 --- Maven2.1 Maven功能 仓库 坐标2.2 Maven之项目构建2.3 Maven之依赖管理 三、插件 --- Maven Helper 一、JavaEE 概述 Java SE、JavaEE&#xff1a; Java SE&#xff1a;指Java标准版&#xff0c;适用于各行各业&#xff0c;主要是Java…

批量将GOID转成GO term名并添加BP,MF,CC分类信息

基因本体论&#xff08;Gene Ontology&#xff0c;GO&#xff0c;https://www.geneontology.org&#xff09;是一个广泛应用于生物信息学领域的知识库&#xff0c;它提供了一套标准化的词汇和分类体系&#xff0c;用于描述基因功能、细胞组分和生物过程。GO旨在统一科研人员对基…

【牛客】排列计算

原题链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 如果直接涂色来计算单点权重&#xff0c;2e5*2e5必然超时。 所以用差分进行优化。 3. 代码实现 #include<bits/stdc.h> using name…

【xxl-job | 第三篇】SpringBoot整合xxl-job

文章目录 3.SpringBoot整合xxl-job3.1定时任务服务配置3.1.1导入maven依赖3.1.2yml配置3.1.3XxlJobConfig配置类3.1.4定时任务类 3.2xxl-job配置3.2.1新增执行器3.2.2新增任务3.2.3执行任务3.2.4查看日志3.2.5查看任务后台日志 3.3小结 3.SpringBoot整合xxl-job 3.1定时任务服…

前端双语实现方案(VUE版)

一、封装一个lib包 结构如下 en.js use strict;exports.__esModule true; exports.default {sp: {input: {amountError: Incorrect amount format},table: {total: Total:,selected: Selected:,tableNoData: No data,tableNoDataSubtext: Tip: Suggest to recheck your fil…

初始化Linux或者Mac下Docker运行环境

文章目录 1 Mac下安装Docker2 Linux下安装Docker2.1 确定Linux版本2.2 安装Docker2.3 配置加速镜像 3 Docker安装校验4 安装docker-compose4.1 直接下载二进制文件4.2 移动二进制文件到系统路径4.3 设置可执行权限4.4 验证安装 1 Mac下安装Docker mac 安装 docker 还是比较方便…

【mysql】mysql单表查询、多表查询、分组查询、子查询等案例详细解析

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

【C++】文件

目录 文件文件分类文本文件的读写(ASCII文件)的读写打开文件打开文件的方式关闭文件将数据写入ASCII文件从ASCII文件读入数据 二进制存储对比ASCII和二进制存储用成员函数read和write读写二进制文件打开方式文件的读入与读出 文件 所谓文件&#xff0c;一般指存储在外部介质上…

MATLAB实现遗传算法优化同时取送货的车辆路径问题VRPSDP

同时取送货的车辆路径问题VRPSDP的数学模型如下: 模型假设 所有车辆的载重、容量等性能相同。每个客户的需求&#xff08;送货和取货量&#xff09;是已知的&#xff0c;且在服务过程中不会改变。车辆的行驶速度恒定&#xff0c;不考虑交通拥堵等实时路况变化。每个客户点只能…

Foxmail邮箱API发送邮件失败的原因有哪些?

Foxmail邮箱API发送邮件的注意事项&#xff1f;如何用API发信&#xff1f; 在使用Foxmail邮箱API发送邮件时&#xff0c;有时会遇到发送失败的情况。这种情况可能由多种原因造成&#xff0c;下面AokSend就来详细探讨一下Foxmail邮箱API发送邮件失败的可能原因。 Foxmail邮箱A…

【负载均衡在线OJ项目日记】编译与日志功能开发

目录 日志功能开发 常见的日志等级 日志功能代码 编译功能开发 创建子进程和程序替换 重定向 编译功能代码 日志功能开发 日志在软件开发和运维中起着至关重要的作用&#xff0c;目前我们不谈运维只谈软件开发&#xff1b;日志最大的作用就是用于故障排查和调试&#x…

Microsoft 365 for Mac v16.84 office365全套办公软件

Microsoft 365 for Mac是一款功能丰富的办公软件套件&#xff0c;为Mac用户提供了丰富的功能和工具&#xff0c;提高了工作效率和协作能力。Microsoft 365 for Mac是一款专为Mac用户设计的订阅式办公软件套件&#xff0c;旨在提高生产力和效率。 Microsoft 365 for Mac v16.84正…

管易云与金蝶K3-WISE对接集成发货单查询2.0打通新增销售出库(红蓝字)

管易云与金蝶K3-WISE对接集成发货单查询2.0打通新增销售出库&#xff08;红蓝字&#xff09; 源系统:管易云 金蝶管易云是金蝶集团旗下以电商和新零售为核心业务的子公司&#xff0c;公司于2008年成立&#xff0c;拥有从事电商及新零售业务相关专业知识工作者超过1000人。为伊利…

AI烟雾监测识别摄像机:智能化安全防范的新利器

随着现代社会的不断发展&#xff0c;人们对于安全问题的关注日益增加&#xff0c;尤其是在日常生活和工作中&#xff0c;对火灾等意外事件的预防成为了一项重要任务。为了更好地应对火灾风险&#xff0c;近年来&#xff0c;AI烟雾监测识别摄像机应运而生&#xff0c;成为智能化…

信息熵为凹函数-推导

凹函数和凸函数&#xff0c;是凹凸是相对于x轴来说的&#xff0c;对于熵来说&#xff0c;它是凹函数。因为它是-log函数&#xff0c;函数曲线相对于x轴来说是凸的。 Jensen不等式推导 以下是证明熵是凹函数。 引理&#xff1a; ①Jensen不等式&#xff0c;条件&#xff1a;…