JavaWeb 购物车项目

这篇具有很好参考价值的文章主要介绍了JavaWeb 购物车项目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天是基于我们所学的服务器存储端和三层架构来完善该项目,今天先完善一部分的功能。

 

一.购物车项目思路

1.登录

  • 先创建一个用户表,表中有id,name,pwd三个属性首。
  • 需要具备一个登录页面,一个处理登录数据的页面,在该页面进行判断,当该用户存在,我们跳转到商城,用户不存在回到登录界面

2.商城

  • 创建一张商品表
  • 当登录成功以后跳转到商城页面,商城有商品显示,商品数据来自于商品表中的数据。
  • 点击加入购物车,如果点击加入的商品在购物车中存在的话,只增加商品数量,而不会在显示一条该商品数据。
  • 点击加入购物车时携带商品id跳转到处理购物车数据的页面,我们把购物车中的数据存在session中。

3.购物车

  • 购物车今天我们只做从session中把数据拿出来,显示在页面上,可以把总价计算出来,其他功能在下一篇文章给大家讲解

二.项目的文件路径展示 

 biz : 存放业务逻辑层的接口
 biz.impl : 存放业务逻辑层的实现类
 dao : 存放数据访问层的接口
 dao.impl : 存放数据访问层的实现
 

 JavaWeb 购物车项目


三.项目代码展示

1.ulit包下DBHeper类代码展示

作用:连接数据库oracle

package com.yjx.ulit;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import oracle.jdbc.driver.OracleDriver;

public class DBHeper {
  static {
	  try {
		  Class.forName("oracle.jdbc.driver.OracleDriver");
	} catch (Exception e) {
		  e.printStackTrace();
	}
	  
  }
  
  private static final String URL="jdbc:oracle:thin:@localhost:1521:orcl";
  
  public static Connection getCon() {
	  try {
	 return	DriverManager.getConnection(URL,"scott","zking123");
	} catch (Exception e) {
		e.printStackTrace();
	}
	  return null;
  }
  
  public static void getColes(Connection con,PreparedStatement ps,ResultSet rs) {
	  try {
		  if(con!=null&&!con.isClosed())con.close();
		  if(ps!=null)ps.close();
		  if(rs!=null)rs.close();
	} catch (Exception e) {
		 e.printStackTrace();
	} 
	  
  }
}

2.pojo包下方的实体类

user:用户实体类

package com.yjx.pojo;

public class User {
  private int id;
  private String name;
  private String pwd;
public int getId() {
	return id;
}
public void setId(int id) {
	this.id = id;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public String getPwd() {
	return pwd;
}
public void setPwd(String pwd) {
	this.pwd = pwd;
}
  
  
public User() {
	
}

public User(int id, String name, String pwd) {
	super();
	this.id = id;
	this.name = name;
	this.pwd = pwd;
}


@Override
public String toString() {
	return "User [id=" + id + ", name=" + name + ", pwd=" + pwd + "]";
}


}

shop:商品实体类

package com.yjx.pojo;

public class Shop {
   private int id;
   private String name;
   private Double price;
   private String text;
public int getId() {
	return id;
}
public void setId(int id) {
	this.id = id;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public Double getPrice() {
	return price;
}
public void setPrice(Double price) {
	this.price = price;
}
public String getText() {
	return text;
}
public void setText(String text) {
	this.text = text;
}

public Shop(int id, String name, Double price, String text) {
	super();
	this.id = id;
	this.name = name;
	this.price = price;
	this.text = text;
}
   
   public Shop() {
	
}
   
@Override
public String toString() {
	return "Shop [id=" + id + ", name=" + name + ", price=" + price + ", text=" + text + "]";
}
   
   
   
}

3.vo包下购物车的实体类

package com.yjx.vo;

public class Car {
	private Integer id;
	private String name;
    private Integer count;
    private Double sum;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getCount() {
		return count;
	}
	public void setCount(Integer count) {
		this.count = count;
	}
	public Double getSum() {
		return sum;
	}
	public void setSum(Double sum) {
		this.sum = sum;
	}
	@Override
	public String toString() {
		return "Car [id=" + id + ", name=" + name + ", count=" + count + ", sum=" + sum + "]";
	}
	public Car(Integer id, String name, Integer count, Double sum) {
		super();
		this.id = id;
		this.name = name;
		this.count = count;
		this.sum = sum;
	}
	
    public Car() {
		// TODO Auto-generated constructor stub
	}
    
    
}

4.数据访问层

 user的数据访问层: dao : 存放数据访问层的接口(IUserDao)
                                dao.impl : 存放数据访问层的实现类(UserDaoImpl)

dao : 存放数据访问层的接口(IUserDao)

package com.yjx.dao;

import java.util.List;

import com.yjx.pojo.Shop;
import com.yjx.pojo.User;

public interface IUserDao {
   //登录方法
   User login(User u);
 
}

  dao.impl : 存放数据访问层的实现类(UserDaoImpl) 

package com.yjx.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.yjx.dao.IUserDao;
import com.yjx.pojo.Shop;
import com.yjx.pojo.User;
import com.yjx.ulit.DBHeper;

public class UserDaoimpl implements IUserDao{
		
	private Connection con;
	private PreparedStatement ps;
	private ResultSet rs;
	
	/**
	 * 登录方法
	 */
  
	public User login(User u) {
		try {
			con=DBHeper.getCon();
			ps=con.prepareStatement("select * from shop_user where uname=?");
			ps.setString(1,u.getName());
			rs=ps.executeQuery();
			if(rs.next()) {
			User user=new User();
			user.setId(rs.getInt(1));
			user.setName(rs.getString(2));
			user.setPwd(rs.getString(3));
			return user;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHeper.getColes(con, ps, rs);
		}
		return null;
	}

}

 shop的数据访问层: dao : 存放数据访问层的接口(IShopDao)
                                dao.impl : 存放数据访问层的实现类(ShoprDaoImpl)

dao : 存放数据访问层的接口(IShopDao)

package com.yjx.dao;

import java.util.List;

import com.yjx.pojo.Shop;

public interface IShopDao {
   //查询数据库中商品表中的所有数据
	List<Shop> select();
	
	//根据id查询数据

	Shop selectId(int id);
}

dao.impl : 存放数据访问层的实现类(ShoprDaoImpl)

package com.yjx.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.yjx.dao.IShopDao;
import com.yjx.pojo.Shop;
import com.yjx.ulit.DBHeper;

public class ShopDaoImpl implements IShopDao {
   private Connection con;
   private PreparedStatement ps;
   private ResultSet rs;

	public List<Shop> select() {
	 List<Shop> list=new ArrayList();
	 try {
		con=DBHeper.getCon();
		ps=con.prepareStatement("select * from shop");
		rs=ps.executeQuery();
		while(rs.next()) {
			Shop s=new Shop();
			s.setId(rs.getInt(1));
			s.setName(rs.getString(2));
			s.setPrice(rs.getDouble(3));
			s.setText(rs.getString(4));
			list.add(s);
		}
	} catch (Exception e) {
		e.printStackTrace();
	}finally {
		DBHeper.getColes(con, ps, rs);
	}
		 
		return list;
	}
	
	@Override
		public Shop selectId(int id) {
	
		 try {
			con=DBHeper.getCon();
			ps=con.prepareStatement("select * from shop where sidd=?");
			ps.setInt(1, id);
			rs=ps.executeQuery();
			if(rs.next()) {
				Shop s=new Shop();
				s.setId(rs.getInt(1));
				s.setName(rs.getString(2));
				s.setPrice(rs.getDouble(3));
				s.setText(rs.getString(4));
				return s;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHeper.getColes(con, ps, rs);
		}
			 
			return null;
		}
}

5.业务逻辑层

user业务逻辑层:   biz : 存放业务逻辑层的接口(IUserBiz)

                                biz.impl : 存放业务逻辑层的实现类(UserBizImpl)

 biz : 存放业务逻辑层的接口(IUserBiz)

package com.yjx.biz;

import com.yjx.pojo.User;

public interface IUserBiz {
	//登录方法
	  User login(User u);

}

biz.impl : 存放业务逻辑层的实现类(UserBizImpl)

package com.yjx.biz.impl;

import com.yjx.biz.IUserBiz;
import com.yjx.dao.IUserDao;
import com.yjx.dao.impl.UserDaoimpl;
import com.yjx.pojo.User;

public class UserBizImpl implements IUserBiz{
	
	IUserDao dao=new UserDaoimpl();
 /**
  * 登录方法
  */
public User login(User u) {
	User user=dao.login(u);
	//当用户不为空
	if(user!=null) {
	if(user.getPwd().equals(u.getPwd())) {
		return user;
	}
	}
	 return null;
}
}

shop业务逻辑层:   biz : 存放业务逻辑层的接口(IShopBiz)

                                biz.impl : 存放业务逻辑层的实现类(ShopBizImpl)

 biz : 存放业务逻辑层的接口(IShopBiz

package com.yjx.biz;

import java.util.List;

import com.yjx.pojo.Shop;

public  interface IShopBiz {
 
	//查询数据库中商品表中的所有数据
	List<Shop> select();
	
	//根据id查询数据
	Shop selectId(int id);
}

biz.impl : 存放业务逻辑层的实现类(ShopBizImpl)

package com.yjx.biz.impl;

import java.util.List;

import com.yjx.biz.IShopBiz;
import com.yjx.dao.IShopDao;
import com.yjx.dao.impl.ShopDaoImpl;
import com.yjx.pojo.Shop;

public class ShopBizImpl implements IShopBiz{
  
	 IShopDao dao=new ShopDaoImpl();
	 /*
	  *查询商品表的所有数据 
	  */
	 @Override
	public List<Shop> select() {
		List<Shop> list=dao.select();
		return list;
	}
	 /**
	  * 根据id查询数据
	  */
	
	public Shop selectId(int id) {
		Shop s=dao.selectId(id);
		return s;
	}
}

6.登录界面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/css/bootstrap.css">
    <script src="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/js/jquery-3.5.1.js"></script>
    <script src="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/js/bootstrap.js"></script>
    <style>
        * {
            outline: none !important;
        }

        html,
        body {
            background: #1abe9c;
        }

        form {
            width: 300px;
            background: #ebeff2;
            box-shadow: 0px 0px 50px rgba(0, 0, 0, .5);
            border-radius: 5px;
            padding: 20px;
            position: absolute;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
        }

        .btn-group {
            width: 100%;
        }

        .btn-group button {
            width: 50%;
        }
    </style>
</head>

<body>
    <form action="doLogin.jsp" method="post">
        <h3 class="text-center" style="text-shadow: 2px 2px 1px #ed3f3f;">欢迎光临胡阿玛超市</h3>
        <div class="form-group">
            <input name="username" type="text" class="form-control" placeholder="请输入您的用户名">
        </div>
        <div class="form-group">
            <input name="userpwd" type="password" class="form-control" placeholder="请输入您的密码">
        </div>
        <div class="btn-group">
            <button type="submit" class="btn btn-primary">登录</button>
            <button type="button" class="btn btn-danger">没有账号?</button>
        </div>
    </form>
</body></html>

7.处理登录数据页面

<%@page import="java.util.ArrayList"%>
<%@page import="com.yjx.pojo.Shop"%>
<%@page import="java.util.List"%>
<%@page import="com.yjx.pojo.User"%>
<%@page import="com.yjx.biz.impl.UserBizImpl"%>
<%@page import="com.yjx.biz.IUserBiz"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

 <%
  //接收数据
   String name=request.getParameter("username");
   String pwd=request.getParameter("userpwd");
     //实例一个用户,得到一个用户
     User u=new User(1,name,pwd);
     
     IUserBiz userbiz=new UserBizImpl();
     //调用登录方法,得到一个用户
     User user=userbiz.login(u);
     
     //判断该用户是否存在
     if(user!=null){
    	 //将用户存入session中
    	 session.setAttribute("user",user);
    	 
    	 List<Shop> list=new ArrayList();
    	 //将购物车存入session中
    	 session.setAttribute("list",list);
    	 //跳转到首页
    	 response.sendRedirect("index.jsp");
     }else{
    	 //当用户为空不存在,回到登录界面
    	 response.sendRedirect("login.jsp");
     }
      
 %>

8.商城首页

<%@page import="com.yjx.vo.Car"%>
<%@page import="java.util.List"%>
<%@page import="com.yjx.pojo.Shop"%>

<%@page import="com.yjx.biz.impl.ShopBizImpl"%>
<%@page import="com.yjx.biz.IShopBiz"%>
<%@page import="com.yjx.pojo.User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/css/bootstrap.css">
    <script src="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/js/jquery-3.5.1.js"></script>
    <script src="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/js/bootstrap.js"></script>
    <style>

        td:nth-child(3)::before{
            content: "$";
        }

    </style>
</head>

<%
 Object obj=session.getAttribute("user");
if(obj==null){
    response.sendRedirect("/login.jsp");
    return;
  }
%>
<body>
    <div class="jumbotron">
        <div class="container">
            <h1>欢迎光临胡阿玛SuperMarket</h1>
            <!-- 强转成一个用户,拿到用户名字 -->
            <p>尊贵的<%=((User)obj).getName()%></p>
            <a href="car.jsp">购物车</a>
        </div>
    </div>
    <table class="table">
        <tr>
            <th>商品序号</th>
            <th>商品名称</th>
            <th>商品单价</th>
            <th>商品描述</th>
            <th>操作</th>
        </tr>
        <%
       
         IShopBiz shop=new ShopBizImpl();
       
         //获得一个集合
          List<Shop>list=shop.select();
         //遍历数据
          for(Shop s:list){
   %>
        <tr>
            <td><%=s.getId() %></td>
            <td><%=s.getName() %></td>
            <td><%=s.getPrice() %></td>
            <td><%=s.getText() %></td>
            <td>
                <div class="btn-group btn-group-xs">
                <!-- 当点击了加入购物车将数商品的id传过去 -->
                    <a class="btn btn-primary" href="${pageContext.request.contextPath}/doShop.jsp?id=<%=s.getId()%>">添加购物车</a>
                </div>
            </td>
        </tr>
        <%
          }
        %>
    </table>
</body></html>

9.购物车数据处理页面

<%@page import="com.yjx.vo.Car"%>
<%@page import="java.util.List"%>
<%@page import="com.yjx.biz.impl.ShopBizImpl"%>
<%@page import="com.yjx.biz.IShopBiz"%>
<%@page import="com.yjx.pojo.Shop"%>
<%@page import="com.yjx.dao.impl.ShopDaoImpl"%>
<%@page import="com.yjx.dao.IShopDao"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%

  List<Car> list=(List<Car>)session.getAttribute("list");
   //接收到传过来的数据
   String str=request.getParameter("id");
   
   //判断当在首页点击加入购物车时,已经存在购物车中的商品,只在数量上面新增
   int id=-1;
   if(str!=null){
	   id=Integer.parseInt(str);
   }
    
   boolean f=true;
    //遍历集合
    for(Car c:list){
    	if(c.getId()==id){
    		//数量+1
    	  c.setCount(c.getCount()+1);
    	  //总价
    	  c.setSum(c.getSum()*c.getCount());
    	  f=false;
    	  break;
    	}
    }
   
    if(f){
   IShopBiz sbiz=new ShopBizImpl();
   Shop s=sbiz.selectId(id);
   
   //将数据加入购物车中
   Car car=new Car();
   //id
   car.setId(s.getId());
   car.setName(s.getName());
   car.setCount(1);
   //总价
   car.setSum(s.getPrice()*car.getCount());
   list.add(car);
   
    }
   //更新购物车
   session.setAttribute("list",list);
   //跳回首页
   response.sendRedirect("index.jsp");
      
%>

10.购物车页面

<%@page import="com.yjx.vo.Car"%>
<%@page import="java.util.List"%>
<%@page import="com.yjx.pojo.User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>购物车</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/css/bootstrap.css">
    <script src="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/js/jquery-3.5.1.js"></script>
    <script src="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/js/bootstrap.js"></script>
    <style>
      
        * {
            outline: none !important;
        }

        td,
        th {
            text-align: center;
        }

        input {
            text-align: center;
        }
        
    </style>
</head>

 <%
   Object obj=session.getAttribute("user");
 
 %>
<body>
    <div class="jumbotron">
        <div class="container">
            <h1>欢迎光临胡阿玛购物车🛒</h1>
            <p>尊贵的<%=((User)obj).getName()%></p>
        </div>
    </div>
     <a href="index.jsp" >商城</a>
    <table class="table">
        <tr>
            <th>商品序号</th>
            <th>商品名称</th>
            <th>商品个数</th>
            <th>商品总价</th>
            <th>操作</th>
        </tr>
        <%
         List<Car> list=(List<Car>)session.getAttribute("list");
         Double sum=0.00;
        //遍历
        for(Car c:list){
              sum+=c.getSum();
        %>
        <tr>
            <td style="line-height: 30.5px;"><%=c.getId()%></td>
            <td style="line-height: 30.5px;"><%=c.getName() %></td>
            <td>
                <div class="input-group" style="width: 120px;margin: auto;">
                    <span class="input-group-btn">
                        <a class="btn btn-default" type="button" href="doCar.jsp?math=1&id=<%=c.getId()%>">-</a>
                    </span>
                    <input value="<%=c.getCount()%>" type="text" class="form-control">
                    <span class="input-group-btn">
                        <a class="btn btn-default" type="button" href="doCar.jsp?math=2&id=<%=c.getId()%>">+</a>
                    </span>
                </div>
            </td>
            <td style="line-height: 30.5px;">$<%=c.getSum() %></td>
            <td style="line-height: 30.5px;">
                <button class="btn btn-primary">删除</button>
            </td>
        </tr>
       <%
        }
       %>
    </table>

    <h1 class="alert alert-info">
        当前购物车总价
        <small><%=sum %></small>
        <button class="btn btn-danger">点我结算</button>
    </h1>
    
  
</body></html>

今天的学习就到这里啦,明天在给大家完善该购物车项目。文章来源地址https://www.toymoban.com/news/detail-469849.html

到了这里,关于JavaWeb 购物车项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • javaweb实现购物车功能

    使用到的相关知识(部分知识点在文章中简单涉及到):        html  cs  javascript  jsp  servlet   ajax  jQuery  Mysql  MyBatis(持久层框架,用来连接数据库,这里可以使用jdbc进行数据库的连接)  功能使用MVC设计模式,以及三层架构思想 注: 本篇使用 Session 对购物车进行存储,具体参

    2023年04月21日
    浏览(20)
  • JavaWeb购物系统(六)购物车订单模块的实现

    有订单时的效果图 无订单时的效果图 订单详情页 生成订单 订单页的展示 查看订单详情 和购物车同样的,首先得知道我们的订单对应的哪个实体对象。一个用户可能有多条订单记录,一个订单里边可以包含多个 商品(也可以理解为多个购物项) 。理清这个逻辑之后,我们

    2024年02月05日
    浏览(27)
  • JavaWeb(10)——前端综合案例4(购物车示例)

           购物车需要展示一个已加入购物车的商品列表,包含商品名称、商品单价、购买数量和操作 等信息,还需要实时显示购买的总价。其中购买数量可以增加或减少,每类商品还可以从购物车中移除。最终实现的效果大致如图所示。 基础版 plus版              先在

    2024年02月05日
    浏览(24)
  • Javaweb MVC+dao实现简单购物车(实验)

    本篇文章给大家分享一下简单购物车的实现。含商品图片、清空购物车、指定数量增加、结算。 代码放网盘里了,需要自取。注意是登录注册+购物车的,这两个实际运行是分开的,登录注册需运行user_login.jsp,购物车需运行cart.jsp。提取码:poem 首先给出截图,需要建这些文

    2024年02月03日
    浏览(26)
  • Vue项目商品购物车前端本地缓存逻辑(适用H5/ipad/PC端)——前端实现购物车删除商品、购物车增减数量,清空购物车功能

    Vue3 + Vite + Ts开源后台管理系统模板 基于ElementUi或AntdUI再次封装基础组件文档 基于Element-plus再次封装基础组件文档(vue3+ts)

    2024年02月12日
    浏览(27)
  • Vue项目(购物车)

    目录 购物车效果展示: 购物车代码: 购物车效果展示: 此项目添加、修改、删除数据的地方都写了浏览器都会把它存储起来 下次运行项目时会把浏览器数据拿出来并在页面展示 Video_20230816145047 购物车代码: 复制完代码,需改下script中引入的vue文件地址; 可直接使用

    2024年02月12日
    浏览(18)
  • 【javaweb+springboot】旅游网页面设计(主购物车功能)——前后端分离+服务端客户端增删改查(完整代码+文档)

    一、项目背景 由于疫情原因,张家界旅游业受到很大的影响,为了促进旅游业的发展,吸引更多游客来到张家界旅游,帮助游客更好地了解张家界,创建张家界旅游网,推进旅游发展大会的开展,展示当地风土人情。景区推荐和酒店预定使得游客出行更加的方便,通过游客留

    2024年02月09日
    浏览(19)
  • 微信小程序 - 商城项目 - 购物车

      引入 WeUI:

    2023年04月22日
    浏览(24)
  • SpringBoot项目--电脑商城【加入购物车】

    1.使用use命令先选中store数据库 2.在store数据库中创建t_cart用户数据表 在entity包下创建购物车的Cart实体类并使其继承BaseEntity 1.向购物车表中插入商品数据的SQL语句 2.如果当前商品已经在购物车存在,则直接更新商品即可 3.在插入或者更新具体执行哪个语句,取决于数据库中是否

    2024年02月09日
    浏览(28)
  • 【java】【项目实战】[外卖八]产品展示、购物车、下单开发

    目录 一、导入用户地址簿相关功能代码 1 需求分析 2 数据模型 3 导入功能代码  3.1 实体AddressBook  3.2 Mapper接口AddressBookMapper   3.3 业务接口层AddressBookService 3.4 业务接口实现类AddressBookServiceImpl 3.5 控制层AddressBookController 4 功能测试 二、菜品展示 1 需求分析 2 代码开发  2.1 m

    2024年02月11日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包