【JavaWeb项目】——外卖订餐系统用户购买餐品、查询购物车、取消购物车餐品操作

举报
Y小夜 发表于 2024/12/05 22:18:24 2024/12/05
【摘要】 【JavaWeb项目】——外卖订餐系统用户购买餐品、查询购物车、取消购物车餐品操作

🎯购买餐品

😎后端处理AddCarServlet部分

🎈代码

package com.dingcan.controller;

import com.dingcan.service.CarService;
import com.dingcan.service.Impl.CarServiceImpl;

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 = "AddCarServlet", value = "/addCarServlet")
public class AddCarServlet extends HttpServlet {
    CarService carService=new CarServiceImpl();
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String cname=req.getParameter("fname");
        int cprice=Integer.parseInt(req.getParameter("fprice"));
        int cfid=Integer.parseInt(req.getParameter("fid"));
        int cuid= (int) req.getSession().getAttribute("uid1");
        int cdid=Integer.parseInt(req.getParameter("fdianid"));
        if(carService.addCar(cname,cprice,cfid,cuid,cdid))
        {
            resp.sendRedirect("ushowCarServlet");
        }
        else
        {
            resp.sendRedirect("fail.jsp");
        }

    }
}

🎈解析

        这段Java代码是一个Servlet控制器,用于处理将新餐品添加到购物车的请求:

  1. 包声明:

    • package com.dingcan.controller;: 声明了这个类属于 com.dingcan.controller 包。
  2. 导入服务类:

    • 导入了 com.dingcan.service.CarService 接口及其实现类 com.dingcan.service.Impl.CarServiceImpl
  3. @WebServlet 注解:

    • @WebServlet(name = "AddCarServlet", value = "/addCarServlet"): 注解用于注册Servlet,定义了它的名称和URL映射。当访问 /addCarServlet 路径时,这个Servlet会被调用。
  4. 类定义:

    • public class AddCarServlet extends HttpServlet: 定义了一个名为 AddCarServlet 的类,它继承自 HttpServlet
  5. 成员变量:

    • CarService carService = new CarServiceImpl();: 创建了 CarService 接口的实现类 CarServiceImpl 的实例。
  6. service 方法:

    • @Override: 表示重写了父类的方法。
    • protected void service(HttpServletRequest req, HttpServletResponse resp): 这是Servlet的 service 方法,用于处理客户端的请求。
  7. 获取请求参数:

    • 从请求中获取商品名称 (cname)、价格 (cprice)、商品ID (cfid)、用户ID (cuid) 和店铺ID (cdid)。
  8. 从会话中获取用户ID:

    • int cuid = (int) req.getSession().getAttribute("uid1");: 从会话中安全地获取用户ID。
  9. 添加商品到购物车:

    • if (carService.addCar(cname, cprice, cfid, cuid, cdid)): 使用 carService 的 addCar 方法尝试添加商品到购物车。
  10. 重定向:

    • 如果添加成功,使用 resp.sendRedirect("ushowCarServlet") 重定向到 ushowCarServlet,这将展示添加成功的反馈或购物车列表。
    • 如果添加失败,使用 resp.sendRedirect("fail.jsp") 重定向到错误页面。
  11. 异常处理:

    • 方法声明中包含了 throws ServletException, IOException,表示这个方法可能会抛出 ServletException 和 IOException 异常。

    AddCarServlet 的主要作用是接收用户提交的商品信息,调用服务层方法添加商品到购物车,并根据操作结果重定向到相应页面。这个过程中,它利用了会话管理来获取当前登录用户的ID,并与用户提交的商品信息一起存储到数据库中。如果添加失败,可能需要添加额外的逻辑来提供反馈信息给用户。

🎯查询购物车

😎后端处理UshowCarServlet部分

🎈代码

package com.dingcan.controller;


import cn.hutool.db.Entity;
import com.dingcan.service.CarService;
import com.dingcan.service.Impl.CarServiceImpl;

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 = "UshowCarServlet", value = "/ushowCarServlet")
public class UshowCarServlet extends HttpServlet {
    CarService carService=new CarServiceImpl();
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取session中的uid1
        int uid1= (int) req.getSession().getAttribute("uid1");
        List<Entity> list=carService.uFindCar(uid1);
        if (list!=null){
            req.setAttribute("list",list);
            req.getRequestDispatcher("/u1/showCar2.jsp").forward(req,resp);
        }

    }
}

🎈解析

        这段Java代码是一个Servlet控制器,用于展示用户购物车中的餐品信息:

  1. 包声明:

    • package com.dingcan.controller;: 声明了这个类属于 com.dingcan.controller 包。
  2. 导入相关类:

    • 导入了 cn.hutool.db.Entity 用于数据库操作。
    • 导入了 com.dingcan.service.CarService 接口及其实现类 com.dingcan.service.Impl.CarServiceImpl
  3. @WebServlet 注解:

    • @WebServlet(name = "UshowCarServlet", value = "/ushowCarServlet"): 注解用于注册Servlet,定义了它的名称和URL映射。当访问 /ushowCarServlet 路径时,这个Servlet会被调用。
  4. 类定义:

    • public class UshowCarServlet extends HttpServlet: 定义了一个名为 UshowCarServlet 的类,它继承自 HttpServlet
  5. 成员变量:

    • CarService carService = new CarServiceImpl();: 创建了 CarService 接口的实现类 CarServiceImpl 的实例。
  6. service 方法:

    • @Override: 表示重写了父类的方法。
    • protected void service(HttpServletRequest req, HttpServletResponse resp): 这是Servlet的 service 方法,用于处理客户端的请求。
  7. 获取会话属性:

    • int uid1 = (int) req.getSession().getAttribute("uid1");: 从会话中获取用户ID (uid1)。
  8. 查询数据库:

    • List<Entity> list = carService.uFindCar(uid1);: 使用 carService 的 uFindCar 方法根据用户ID查询购物车中的商品信息。
  9. 检查查询结果:

    • if (list != null): 检查查询结果是否不为空。
  10. 设置请求属性:

    • req.setAttribute("list", list);: 将查询结果 list 设置为请求属性,这样就可以在JSP页面中通过 ${list} 访问这些数据。
  11. 请求转发:

    • req.getRequestDispatcher("/u1/showCar2.jsp").forward(req, resp);: 将请求转发到 /u1/showCar2.jsp 页面,携带请求属性。
  12. 异常处理:

    • 方法声明中包含了 throws ServletException, IOException,表示这个方法可能会抛出 ServletException 和 IOException 异常。

    UshowCarServlet 的主要作用是根据用户ID检索购物车中的商品信息,并将这些信息转发到 showCar2.jsp 页面进行展示。如果查询结果为空,则可能不会执行转发,这意味着在 showCar2.jsp 页面中需要对 list 可能为 null 的情况进行处理。使用 hutool 库的 Entity 类来处理数据库查询结果。这个Servlet通过转发请求到JSP页面,实现了MVC架构中的控制层功能。

😎前端界面showCar2.jsp部分

🎈代码

<%--
  Created by IntelliJ IDEA.
  User: Lenovo
  Date: 20/6/2024
  Time: 下午10:38
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>展示商家1登入的信息</title>
    <!-- 引入 Bootstrap -->
    <link href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    <link href="css/uShow.css" rel="stylesheet">
</head>
<body>
<div class="first">
    <div class="one">
        <div class="two">
            <img src="image/four.jpg" alt="LOGO">
            <label>优质外卖订餐系统</label>
        </div>
        <div class="three">
            <a href="exitServlet" class="btn">注销</a>
        </div>
    </div>
    <div class="btn-group-vertical">
        <ul class="menuOne">
            <li>
                <a href="ushowFoodServlet?c=1" class="btn" role="button">老王火锅店</a>
                <ul class="menuTwo">
                    <li><a href="ushowFoodServlet?c=2" class="btn" role="button">肉类</a></li>
                    <li><a href="ushowFoodServlet?c=3" class="btn" role="button">菜类</a></li>
                    <li><a href="ushowFoodServlet?c=4" class="btn" role="button">其他</a></li>
                </ul>
            </li>
            <li>
                <a href="ushowFoodServlet?c=5" class="btn" role="button">精品零食店</a>
                <ul class="menuTwo">
                    <li><a href="ushowFoodServlet?c=6" class="btn" role="button">辣食</a></li>
                    <li><a href="ushowFoodServlet?c=7" class="btn" role="button">甜食</a></li>
                    <li><a href="ushowFoodServlet?c=8" class="btn" role="button">其他</a></li>
                </ul>
            </li>
            <li>
                <a href="ushowCarServlet" class="btn" role="button">我的购物车</a>
                <ul class="menuTwo">
                </ul>
            </li>
        </ul>
    </div>
    <div class="four">
        <table  class="table table-striped table-bordered table-condensed">
            <thead>
            <tr  class="warning">
                <td>餐名</td>
                <td>价格</td>
                <td>状态</td>
                <td>操作</td>
            </tr>
            </thead>
            <tbody>
            <c:forEach items="${list}" var="car">
                <tr  class="danger">
                    <td>${car.cname}</td>
                    <td>${car.cprice}</td>
                    <td>${car.cstate == 1 ? "发货中" : "未发货"}</td>
                    <td>
                        <a href="delCarServlet?cid=${car.cid}" class="btn btn-primary">取消</a>
                    </td>
                </tr>
            </c:forEach>
            </tbody>
        </table>
    </div>
</div>
<script src="js/ucaidan.js"></script>
</body>
</html>

🎈解析

        这段代码是一个JSP页面,用于展示用户登录后的信息,特别是他们购物车中的商品信息:

  1. JSP注释:

    • 页面顶部的注释由IntelliJ IDEA自动生成,提供了创建者、日期和时间。
  2. 页面指令:

    • <%@ 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作为前缀。
  3. HTML结构:

    • <html>: 根元素。
    • <head>: 包含页面的元数据,如标题和样式链接。
    • <title>: 页面标题为“展示用户购物车的信息”。
  4. 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样式文件。
  5. 页面内容:

    • <div class="first">: 包含整个页面的主要内容。
    • <div class="one">: 包含LOGO和系统名称。
    • <div class="two">: 包含LOGO图片和系统名称标签。
    • <div class="three">: 包含注销按钮,链接到exitServlet
  6. 导航菜单:

    • <div class="btn-group-vertical">: 垂直排列的按钮组,包含不同商家和分类的链接。
  7. 购物车商品列表:

    • <table class="table table-striped table-bordered table-condensed">: 使用Bootstrap样式的表格,展示购物车中的商品信息。
    • <thead>: 表格的头部,包含列标题。
    • <tbody>: 表格的主体,使用JSTL的<c:forEach>标签循环遍历list集合。
  8. JSTL标签:

    • <c:forEach items="${list}" var="car">: 用于遍历作为请求属性传递到页面的list集合。
  9. 表格行:

    • <tr>: 表格的一行,用于显示单个商品的信息。
    • <td>: 表格单元格,显示商品的名称(car.cname)、价格(car.cprice)、状态。
  10. 操作链接:

    • <a href="delCarServlet?cid=${car.cid}" class="btn btn-primary">取消</a>: 在操作列中,创建一个链接到delCarServlet的按钮,用于取消购物车中的某个商品。
  11. 状态显示:

    • ${car.cstate == 1 ? "发货中" : "未发货"}: 使用JSP表达式来显示商品的当前状态。
  12. Bootstrap类:

    • 页面使用了Bootstrap的类(如btnbtn-primarytable-stripedtable-borderedtable-condensedwarningdanger)来增强表单的布局和样式。
  13. 页面底部:

    • <script src="js/ucaidan.js"></script>: 引入JavaScript文件,可能用于页面的动态交互或效果。

        这个JSP页面提供了一个用户购物车信息展示的用户界面,允许用户查看商品信息,并提供了取消商品的链接。使用Bootstrap框架增强了用户界面的友好性和响应性。

🎯取消购物车餐品

😎后端处理DelCarServlet部分

🎈代码

package com.dingcan.controller;

import com.dingcan.service.CarService;
import com.dingcan.service.Impl.CarServiceImpl;

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 = "DelCarServlet", value = "/delCarServlet")
public class DelCarServlet extends HttpServlet {
    CarService carService=new CarServiceImpl();
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        int cid=Integer.parseInt(req.getParameter("cid"));
        boolean b=carService.delCar(cid);
        if(b){
            resp.sendRedirect("ushowCarServlet");
        }else{
            resp.sendRedirect("fail.jsp");
        }
    }
}

🎈解析

        这段Java代码是一个Servlet控制器,用于处理从用户购物车中删除商品的请求:

  1. 包声明:

    • package com.dingcan.controller;: 声明了这个类属于 com.dingcan.controller 包。
  2. 导入服务类:

    • 导入了 com.dingcan.service.CarService 接口及其实现类 com.dingcan.service.Impl.CarServiceImpl
  3. @WebServlet 注解:

    • @WebServlet(name = "DelCarServlet", value = "/delCarServlet"): 注解用于注册Servlet,定义了它的名称和URL映射。当访问 /delCarServlet 路径时,这个Servlet会被调用。
  4. 类定义:

    • public class DelCarServlet extends HttpServlet: 定义了一个名为 DelCarServlet 的类,它继承自 HttpServlet
  5. 成员变量:

    • CarService carService = new CarServiceImpl();: 创建了 CarService 接口的实现类 CarServiceImpl 的实例。
  6. service 方法:

    • @Override: 表示重写了父类的方法。
    • protected void service(HttpServletRequest req, HttpServletResponse resp): 这是Servlet的 service 方法,用于处理客户端的请求。
  7. 获取请求参数:

    • int cid = Integer.parseInt(req.getParameter("cid"));: 从请求中获取 cid 参数,即要删除的商品的唯一标识符,并转换为整数类型。
  8. 删除商品:

    • boolean b = carService.delCar(cid);: 使用 carService 的 delCar 方法尝试从数据库中删除ID为 cid 的商品。
  9. 重定向:

    • 如果删除成功 (b 为 true),使用 resp.sendRedirect("ushowCarServlet") 重定向到 ushowCarServlet,这将展示更新后的购物车列表。
    • 如果删除失败 (b 为 false),使用 resp.sendRedirect("fail.jsp") 重定向到错误页面。
  10. 异常处理:

    • 方法声明中包含了 throws ServletException, IOException,表示这个方法可能会抛出 ServletException 和 IOException 异常。

   DelCarServlet 的主要作用是接收商品ID,调用服务层方法删除购物车中的商品,并根据操作结果重定向到相应页面。这个过程中,它利用了服务层提供的业务逻辑和数据访问对象来实现数据的持久化。如果删除失败,可能需要添加额外的逻辑来提供反馈信息给用户。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。