【JavaWeb项目】——外卖订餐系统用户购买餐品、查询购物车、取消购物车餐品操作
🎯购买餐品
😎后端处理AddCarServlet部分
🎈代码
🎈解析
这段Java代码是一个Servlet控制器,用于处理将新餐品添加到购物车的请求:
-
包声明:
package com.dingcan.controller;: 声明了这个类属于com.dingcan.controller包。
-
导入服务类:
- 导入了
com.dingcan.service.CarService接口及其实现类com.dingcan.service.Impl.CarServiceImpl。
- 导入了
-
@WebServlet 注解:
@WebServlet(name = "AddCarServlet", value = "/addCarServlet"): 注解用于注册Servlet,定义了它的名称和URL映射。当访问/addCarServlet路径时,这个Servlet会被调用。
-
类定义:
public class AddCarServlet extends HttpServlet: 定义了一个名为AddCarServlet的类,它继承自HttpServlet。
-
成员变量:
CarService carService = new CarServiceImpl();: 创建了CarService接口的实现类CarServiceImpl的实例。
-
service 方法:
@Override: 表示重写了父类的方法。protected void service(HttpServletRequest req, HttpServletResponse resp): 这是Servlet的service方法,用于处理客户端的请求。
-
获取请求参数:
- 从请求中获取商品名称 (
cname)、价格 (cprice)、商品ID (cfid)、用户ID (cuid) 和店铺ID (cdid)。
- 从请求中获取商品名称 (
-
从会话中获取用户ID:
int cuid = (int) req.getSession().getAttribute("uid1");: 从会话中安全地获取用户ID。
-
添加商品到购物车:
if (carService.addCar(cname, cprice, cfid, cuid, cdid)): 使用carService的addCar方法尝试添加商品到购物车。
-
重定向:
- 如果添加成功,使用
resp.sendRedirect("ushowCarServlet")重定向到ushowCarServlet,这将展示添加成功的反馈或购物车列表。 - 如果添加失败,使用
resp.sendRedirect("fail.jsp")重定向到错误页面。
- 如果添加成功,使用
-
异常处理:
- 方法声明中包含了
throws ServletException, IOException,表示这个方法可能会抛出ServletException和IOException异常。
- 方法声明中包含了
AddCarServlet 的主要作用是接收用户提交的商品信息,调用服务层方法添加商品到购物车,并根据操作结果重定向到相应页面。这个过程中,它利用了会话管理来获取当前登录用户的ID,并与用户提交的商品信息一起存储到数据库中。如果添加失败,可能需要添加额外的逻辑来提供反馈信息给用户。
🎯查询购物车
😎后端处理UshowCarServlet部分
🎈代码
🎈解析
这段Java代码是一个Servlet控制器,用于展示用户购物车中的餐品信息:
-
包声明:
package com.dingcan.controller;: 声明了这个类属于com.dingcan.controller包。
-
导入相关类:
- 导入了
cn.hutool.db.Entity用于数据库操作。 - 导入了
com.dingcan.service.CarService接口及其实现类com.dingcan.service.Impl.CarServiceImpl。
- 导入了
-
@WebServlet 注解:
@WebServlet(name = "UshowCarServlet", value = "/ushowCarServlet"): 注解用于注册Servlet,定义了它的名称和URL映射。当访问/ushowCarServlet路径时,这个Servlet会被调用。
-
类定义:
public class UshowCarServlet extends HttpServlet: 定义了一个名为UshowCarServlet的类,它继承自HttpServlet。
-
成员变量:
CarService carService = new CarServiceImpl();: 创建了CarService接口的实现类CarServiceImpl的实例。
-
service 方法:
@Override: 表示重写了父类的方法。protected void service(HttpServletRequest req, HttpServletResponse resp): 这是Servlet的service方法,用于处理客户端的请求。
-
获取会话属性:
int uid1 = (int) req.getSession().getAttribute("uid1");: 从会话中获取用户ID (uid1)。
-
查询数据库:
List<Entity> list = carService.uFindCar(uid1);: 使用carService的uFindCar方法根据用户ID查询购物车中的商品信息。
-
检查查询结果:
if (list != null): 检查查询结果是否不为空。
-
设置请求属性:
req.setAttribute("list", list);: 将查询结果list设置为请求属性,这样就可以在JSP页面中通过${list}访问这些数据。
-
请求转发:
req.getRequestDispatcher("/u1/showCar2.jsp").forward(req, resp);: 将请求转发到/u1/showCar2.jsp页面,携带请求属性。
-
异常处理:
- 方法声明中包含了
throws ServletException, IOException,表示这个方法可能会抛出ServletException和IOException异常。
- 方法声明中包含了
UshowCarServlet 的主要作用是根据用户ID检索购物车中的商品信息,并将这些信息转发到 showCar2.jsp 页面进行展示。如果查询结果为空,则可能不会执行转发,这意味着在 showCar2.jsp 页面中需要对 list 可能为 null 的情况进行处理。使用 hutool 库的 Entity 类来处理数据库查询结果。这个Servlet通过转发请求到JSP页面,实现了MVC架构中的控制层功能。
😎前端界面showCar2.jsp部分
🎈代码
🎈解析
这段代码是一个JSP页面,用于展示用户登录后的信息,特别是他们购物车中的商品信息:
-
JSP注释:
- 页面顶部的注释由IntelliJ IDEA自动生成,提供了创建者、日期和时间。
-
页面指令:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>: 设置页面的MIME类型为HTML,字符集为UTF-8,脚本语言为Java。<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>: 引入JSTL核心库,使用c作为前缀。
-
HTML结构:
<html>: 根元素。<head>: 包含页面的元数据,如标题和样式链接。<title>: 页面标题为“展示用户购物车的信息”。
-
Bootstrap和自定义CSS:
<link href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">: 引入Bootstrap的CSS文件,用于页面样式。<link href="css/uShow.css" rel="stylesheet">: 引入自定义的CSS样式文件。
-
页面内容:
<div class="first">: 包含整个页面的主要内容。<div class="one">: 包含LOGO和系统名称。<div class="two">: 包含LOGO图片和系统名称标签。<div class="three">: 包含注销按钮,链接到exitServlet。
-
导航菜单:
<div class="btn-group-vertical">: 垂直排列的按钮组,包含不同商家和分类的链接。
-
购物车商品列表:
<table class="table table-striped table-bordered table-condensed">: 使用Bootstrap样式的表格,展示购物车中的商品信息。<thead>: 表格的头部,包含列标题。<tbody>: 表格的主体,使用JSTL的<c:forEach>标签循环遍历list集合。
-
JSTL标签:
<c:forEach items="${list}" var="car">: 用于遍历作为请求属性传递到页面的list集合。
-
表格行:
<tr>: 表格的一行,用于显示单个商品的信息。<td>: 表格单元格,显示商品的名称(car.cname)、价格(car.cprice)、状态。
-
操作链接:
<a href="delCarServlet?cid=${car.cid}" class="btn btn-primary">取消</a>: 在操作列中,创建一个链接到delCarServlet的按钮,用于取消购物车中的某个商品。
-
状态显示:
${car.cstate == 1 ? "发货中" : "未发货"}: 使用JSP表达式来显示商品的当前状态。
-
Bootstrap类:
- 页面使用了Bootstrap的类(如
btn,btn-primary,table-striped,table-bordered,table-condensed,warning,danger)来增强表单的布局和样式。
- 页面使用了Bootstrap的类(如
-
页面底部:
<script src="js/ucaidan.js"></script>: 引入JavaScript文件,可能用于页面的动态交互或效果。
这个JSP页面提供了一个用户购物车信息展示的用户界面,允许用户查看商品信息,并提供了取消商品的链接。使用Bootstrap框架增强了用户界面的友好性和响应性。
🎯取消购物车餐品
😎后端处理DelCarServlet部分
🎈代码
🎈解析
这段Java代码是一个Servlet控制器,用于处理从用户购物车中删除商品的请求:
-
包声明:
package com.dingcan.controller;: 声明了这个类属于com.dingcan.controller包。
-
导入服务类:
- 导入了
com.dingcan.service.CarService接口及其实现类com.dingcan.service.Impl.CarServiceImpl。
- 导入了
-
@WebServlet 注解:
@WebServlet(name = "DelCarServlet", value = "/delCarServlet"): 注解用于注册Servlet,定义了它的名称和URL映射。当访问/delCarServlet路径时,这个Servlet会被调用。
-
类定义:
public class DelCarServlet extends HttpServlet: 定义了一个名为DelCarServlet的类,它继承自HttpServlet。
-
成员变量:
CarService carService = new CarServiceImpl();: 创建了CarService接口的实现类CarServiceImpl的实例。
-
service 方法:
@Override: 表示重写了父类的方法。protected void service(HttpServletRequest req, HttpServletResponse resp): 这是Servlet的service方法,用于处理客户端的请求。
-
获取请求参数:
int cid = Integer.parseInt(req.getParameter("cid"));: 从请求中获取cid参数,即要删除的商品的唯一标识符,并转换为整数类型。
-
删除商品:
boolean b = carService.delCar(cid);: 使用carService的delCar方法尝试从数据库中删除ID为cid的商品。
-
重定向:
- 如果删除成功 (
b为true),使用resp.sendRedirect("ushowCarServlet")重定向到ushowCarServlet,这将展示更新后的购物车列表。 - 如果删除失败 (
b为false),使用resp.sendRedirect("fail.jsp")重定向到错误页面。
- 如果删除成功 (
-
异常处理:
- 方法声明中包含了
throws ServletException, IOException,表示这个方法可能会抛出ServletException和IOException异常。
- 方法声明中包含了
DelCarServlet 的主要作用是接收商品ID,调用服务层方法删除购物车中的商品,并根据操作结果重定向到相应页面。这个过程中,它利用了服务层提供的业务逻辑和数据访问对象来实现数据的持久化。如果删除失败,可能需要添加额外的逻辑来提供反馈信息给用户。
- 点赞
- 收藏
- 关注作者
评论(0)