个人主页:【Y小夜】
作者简介:一位双非学校的大二学生,编程爱好者,
专注于基础和实战分享,欢迎私信咨询!
入门专栏:【MySQL,Java基础,Rust】
热门专栏:【Python,Javaweb,Vue框架】
感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持!❤️
目录
购买餐品
后端处理AddCarServlet部分
代码
解析
查询购物车
后端处理UshowCarServlet部分
代码
解析
前端界面showCar2.jsp部分
代码
解析
取消购物车餐品
后端处理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 = "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控制器,用于处理将新餐品添加到购物车的请求:
包声明:
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,并与用户提交的商品信息一起存储到数据库中。如果添加失败,可能需要添加额外的逻辑来提供反馈信息给用户。
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 list=carService.uFindCar(uid1);
if (list!=null){
req.setAttribute("list",list);
req.getRequestDispatcher("/u1/showCar2.jsp").forward(req,resp);
}
}
}
这段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 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架构中的控制层功能。
<%--
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" %>
展示商家1登入的信息
这段代码是一个JSP页面,用于展示用户登录后的信息,特别是他们购物车中的商品信息:
JSP注释:
页面指令:
<%@ 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结构:
: 根元素。
: 包含页面的元数据,如标题和样式链接。
: 页面标题为“展示用户购物车的信息”。Bootstrap和自定义CSS:
: 引入Bootstrap的CSS文件,用于页面样式。
: 引入自定义的CSS样式文件。页面内容:
: 包含整个页面的主要内容。
: 包含LOGO和系统名称。
: 包含LOGO图片和系统名称标签。
: 包含注销按钮,链接到exitServlet
。
-
导航菜单:
: 垂直排列的按钮组,包含不同商家和分类的链接。
-
购物车商品列表:
: 使用Bootstrap样式的表格,展示购物车中的商品信息。
: 表格的头部,包含列标题。
: 表格的主体,使用JSTL的
标签循环遍历list
集合。
-
JSTL标签:
: 用于遍历作为请求属性传递到页面的list
集合。
-
表格行:
: 表格的一行,用于显示单个商品的信息。
: 表格单元格,显示商品的名称(car.cname
)、价格(car.cprice
)、状态。
-
操作链接:
取消
: 在操作列中,创建一个链接到delCarServlet
的按钮,用于取消购物车中的某个商品。
-
状态显示:
${car.cstate == 1 ? "发货中" : "未发货"}
: 使用JSP表达式来显示商品的当前状态。
-
Bootstrap类:
- 页面使用了Bootstrap的类(如
btn
, btn-primary
, table-striped
, table-bordered
, table-condensed
, warning
, danger
)来增强表单的布局和样式。
-
页面底部:
: 引入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控制器,用于处理从用户购物车中删除商品的请求:
-
包声明:
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,调用服务层方法删除购物车中的商品,并根据操作结果重定向到相应页面。这个过程中,它利用了服务层提供的业务逻辑和数据访问对象来实现数据的持久化。如果删除失败,可能需要添加额外的逻辑来提供反馈信息给用户。