0
点赞
收藏
分享

微信扫一扫

JavaWeb MVC购物车(1)

我是小瘦子哟 2022-04-27 阅读 79

目录

一、MVC是什么? 

二、 项目文件

MVC购物车(1)主要完成的功能

数据库建表 


一、MVC是什么? 


二、 项目文件


三、登录功能的制作

 

 login.jsp(登录界面)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <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>
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>登录界面</title>
    <style>
        form {
            width: 500px;
            margin: auto;
        }
    </style>
</head>
<body class="container">
<form action="login.do" method="post">
    <h1>登录</h1>
    <div class="form-group">
        <input name="account" class="form-control" placeholder="用户名">
    </div>
    <div class="form-group">
        <input name="password" class="form-control" placeholder="密码">
    </div>
    <div class="form-group">
        <button class="btn btn-primary btn-block">登录</button>
    </div>
</form>
</body>
</html>

LoginServlet.java(实现登录功能的页面)

package com.zking.servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

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 com.zking.biz.IUserBiz;
import com.zking.biz.impl.UserBizImpl;
import com.zking.pojo.OrderItem;
import com.zking.pojo.User;

/**
 * 实现登录功能
 * @author zjjt
 *
 */
@WebServlet("/login.do")
public class LoginServlet extends HttpServlet{
   
	private IUserBiz userBiz=new UserBizImpl();
	
	//接收用户的数据
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
		//参数获取
		String account = req.getParameter("account");
		String password = req.getParameter("password");
		
		//去biz完成登录验证
		User user = new User();
		//将值封装到对象里面去
		user.setAccount(account);
        user.setPassword(password);
        User u=userBiz.login(user);
        
        if(u==null) {
        	resp.sendRedirect("login.jsp");
        }else {
        	//将数据放到session中
        	req.getSession().setAttribute("user", u);
        	//为用户生成购物车
        	List<OrderItem>car=new ArrayList<OrderItem>();
        	req.getSession().setAttribute("car", car);
        	//把总价直接放到session中
        	req.getSession().setAttribute("total", 0);
        	//去到首页
        	resp.sendRedirect("index.do");
        }
	}
	
}

User.java(用户实体类)

package com.zking.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
 * 用户实体类
 * @author zjjt
 *
 */

public class User {
	 private Integer id;
	 private String account;
	 private String password;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getAccount() {
		return account;
	}
	public void setAccount(String account) {
		this.account = account;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public User(Integer id, String account, String password) {
		super();
		this.id = id;
		this.account = account;
		this.password = password;
	}
	 
	 
	public User() {
		// TODO Auto-generated constructor stub
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", account=" + account + ", password=" + password + "]";
	}
	
	
	 
}

 IUserDao.java(用户访问接口)

package com.zking.dao;

import com.zking.pojo.User;
/**
 * 用户数据访问接口
 * @author zjjt
 *
 */

public interface IUserDao {

	User login(User user);
}

 UserDaoImpl.java(用户数据访问接口)

package com.zking.dao.impl;

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

import com.zking.dao.IUserDao;
import com.zking.pojo.User;
import com.zking.util.DBHelper;
/**
 * 用户数据访问接口实现类
 * @author zjjt
 *
 */
public class UserDaoImpl implements IUserDao{

	private Connection con;
	private PreparedStatement ps;
	private ResultSet rs;
	
	@Override
	public User login(User user) {
		try {
			con=DBHelper.getCon();
			ps=con.prepareStatement("select * from car_user where  account =?");
		    ps.setString(1, user.getAccount());
		    rs=ps.executeQuery();
		    if(rs.next()) {
		    	User u=new User();
		    	u.setId(rs.getInt(1));
		    	u.setAccount(rs.getString(2));
		    	u.setPassword(rs.getString(3));
		       return u;
		    }
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.close(con, ps, rs);
		}
		return null;
	}
   
}

 INewsBiz.java(用户逻辑接口)

package com.zking.biz;

import com.zking.pojo.User;
/**
 * 用户逻辑接口
 * @author zjjt
 *
 */
public interface IUserBiz {
	User login(User user);
}

 UserBizImpl.java(用户逻辑接口实现类)

package com.zking.biz.impl;

import org.apache.commons.codec.digest.DigestUtils;

import com.zking.biz.IUserBiz;
import com.zking.dao.IUserDao;
import com.zking.dao.impl.UserDaoImpl;
import com.zking.pojo.User;
/**
 * 用户逻辑接口实现类
 * @author zjjt
 *
 */
public class UserBizImpl implements IUserBiz{

	private IUserDao userdao=new UserDaoImpl();
	@Override
	public User login(User user) {
		//user 是用户传进来的
		//u 是数据库中存在的
		User u=userdao.login(user);
		if(u==null) {
			
			return null;//account 账号在数据库中查询不到
		}
		//需要将前端的密码加密再和数据库的密码进行比较
		String pwd = DigestUtils.md5Hex(user.getPassword());
		if(!u.getPassword().equals(pwd)) {
			return null;//账号存在 密码不一致
		}
		return u;
	}

}

注意:数据库的密码是进行了加密的 需要先将前端的密码加密再和数据库密码进行比较


四、.页面过滤器的制作

🔘过滤器Filter

  • 精准匹配(/a.jsp)
  • 扩展名匹配(*.jsp)
  • 路径匹配(/manager/*)
  • 匹配所有(/*)

注意过滤器是@WebFilter不要弄错了 

 

如果对过滤器的流程不是很了解的可以查看如下过滤器的流程图 👇

 

 

我们购物车项目使用的过滤规则是/*(所有的页面都会被拦截)所以有些页面需要放行比如说登录页面。放行的代码如下

chain.doFilter(request,response);//放行

 LoginFilter.java(登录过滤页面) 

package com.zkiing.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sun.net.httpserver.Filter.Chain;

@WebFilter("/*")//所有的请求都会被拦截
public class LoginFilter implements Filter{

	
	//如果登陆了正常通行
	//如果没登陆 让你回到登陆页面

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		//有一些页面需要放行
		//父转子强转拿到getServletPath()的方法
		HttpServletRequest req=(HttpServletRequest)request;
		HttpServletResponse resp=(HttpServletResponse)response;
		String path = req.getServletPath();
		if(path.equals("/login.jsp")||path.equals("/login.do")) {
			chain.doFilter(request,response);//放行
			return;
		}
		//判断你是否可以通行【有没有登陆 session中是否有user属性】
		Object user = req.getSession().getAttribute("user");
	    if(user==null) {
	    	resp.sendRedirect("login.jsp");
	    	return;
	    }else {
	    	chain.doFilter(request,response);//放行
	    	
	    }
}
}

五、全部商品的显示

商品显示功能的思路

 login.jsp-(表单)->login.do-(登录验证)->index.do-(拿到首页需要的数据)->index.jsp 显示数据

 

index.jsp(首页代码)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<link rel="stylesheet" href="bootstrap-3.3.7-dist/css/bootstrap.css">
<script src="bootstrap-3.3.7-dist/js/jquery-3.5.1.js"></script>
<script src="bootstrap-3.3.7-dist\js\bootstrap.js"></script>
<meta name="viewport" content="width=device-width,initial-scale=1">
<style>
body {
	padding: 20px 40px;
}
</style>
</head>
<c:if test="${list==null }">
  <c:redirect url="index.do"></c:redirect>
</c:if>
<body>
	<h1>
		${user.account} 您好, <small>这是首页</small>
	</h1>
	<h1>
		<a href="car.jsp" class="btn btn-primary" onclick="">点我去购物车🛒</a>
	</h1>
	<table class="table table-bordered table-striped">
		<tbody><tr>
			<th>商品编号</th>
			<th>商品名称</th>
			<th>商品描述</th>
			<th>商品价格</th>
			<th>商品操作</th>
		</tr>
		<c:forEach items="${list }" var="goods">
		<tr>
			<td>${goods.id }</td>
			<td>${goods.name }</td>
			<td>${goods.describe }</td>
			<td>${goods.price }</td>
			<td><a href="add.do?id=${goods.id }" onclick="" class="btn btn-default">加入🚗</a></td>
		</tr>
	</c:forEach>
		
		
	</tbody></table>

</body></html>

 IndexServlet.java(处理首页界面)

package com.zking.servlet;

import java.io.IOException;
import java.util.List;

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 com.zking.biz.IGoodsBiz;
import com.zking.biz.impl.GoodsBizImpl;
import com.zking.pojo.Goods;
/**
 * 处理首页界面
 * @author zjjt
 *
 */
@WebServlet("/index.do")
public class IndexServlet extends HttpServlet{

	private IGoodsBiz goodsBiz=new GoodsBizImpl();
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	   //取到biz层商品数据的集合
		List<Goods> list = goodsBiz.list();
		//把数据放到index.jsp中去显示
		req.setAttribute("list",list);
		//只有转发才能携带请求的数据
		req.getRequestDispatcher("index.jsp").forward(req, resp);
	}
}

六、.购物车商品的添加

 

Car.jsp(购物车界面)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib  prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<link rel="stylesheet" href="bootstrap-3.3.7-dist/css/bootstrap.css">
<script src="bootstrap-3.3.7-dist/js/jquery-3.5.1.js"></script>
<script src="bootstrap-3.3.7-dist\js\bootstrap.js"></script>
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>我的购物车</title>
</head>
<body>
<div class="container">
	<h1>
		${user.account} 您好, <small>这是首页</small>
	</h1>
	<h1>
		<a href="index.do" class="btn btn-default">继续购买</a>
		<a href="" class="btn btn-default">订单结算</a>
		<a href="" class="btn btn-default">查看订单</a>
	    <a href="clear.do" class="btn btn-default">清空🛒</a>
	</h1>
	<table class="table table-bordered table-striped">
		<tbody><tr>
			<th>商品编号</th>
			<th>商品名称</th>
			<th>商品数量</th>
			<th>商品总价</th>
			<th>商品操作</th>
		</tr>
		<c:forEach items="${car }" var="item">
		
		<tr>
			<td>${item.goods.id }</td>
			<td>${item.goods.name}</td>
			<td>${item.quantity  }</td>
			<td>${item.total}</td>
			<td>
			<a href="del.do?id=${item.goods.id }" class="btn btn-default">删除</a>
			<a href="upd.do?id=${item.goods.id }&type=1" class="btn btn-default">+1</a>
			<a href="upd.do?id=${item.goods.id }&type=-1" class="btn btn-default">-1</a>
			</td>
		</tr>
		</c:forEach>
	</tbody></table>
	<h1>
	   total:${total }
	</h1>
	</div>

</body></html>

 AddServlet.java(处理购物车商品添加界面)

package com.zking.servlet;

import java.io.IOException;
import java.util.List;

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 com.zking.biz.IGoodsBiz;
import com.zking.biz.impl.GoodsBizImpl;
import com.zking.pojo.Goods;
import com.zking.pojo.OrderItem;

@WebServlet("/add.do")
public class AddServlet extends HttpServlet{
	
	private IGoodsBiz goodsBiz=new GoodsBizImpl();
	
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	doPost(req, resp);
}
@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	   List<OrderItem> car= (List<OrderItem>)req.getSession().getAttribute("car");
	  //拿到添加的商品编号
	   int id = Integer.parseInt(req.getParameter("id"));
     //购物车中已经有了
	  boolean f=true;
	   for(OrderItem item:car) {
		    //item 订单项中有一个与他对应的商品
		   if(item.getGoods().getId().equals(id)) {
			   //数量+1
			   item.setQuantity(item.getQuantity()+1);
		       //价格需要重新计算
			   Integer total=(Integer)req.getSession().getAttribute("total");
		       total+=item.getGoods().getPrice();
		       req.getSession().setAttribute("total",total);
			 
		       f=false;
		       break;
		    }
	   }
	   //购物车中没有添加购物车
	   if(f) {
		   //生成订单项的购物车
		   OrderItem item=new OrderItem();
		   //根据商品的id去数据库查询这件商品
		   Goods one= goodsBiz.one(id);
		   item.setGoods(one);
		   item.setQuantity(1);
		   item.setTotal(one.getPrice());
		   //添加订单项的购物车
		   car.add(item);
		   Integer total=(Integer)req.getSession().getAttribute("total");
	       total+=one.getPrice();
	       req.getSession().setAttribute("total",total);
	   }
	   //返回首页
	   resp.sendRedirect("index.do");

}
}

 Goods.java(商品实体类)

package com.zking.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
 * 商品实体类
 * @author zjjt
 *
 */

public class Goods {
 
	   private Integer id;
	   private String name;
	   private String describe;
	   private Integer price;
	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 String getDescribe() {
		return describe;
	}
	public void setDescribe(String describe) {
		this.describe = describe;
	}
	public Integer getPrice() {
		return price;
	}
	public void setPrice(Integer price) {
		this.price = price;
	}
	public Goods(Integer id, String name, String describe, Integer price) {
		super();
		this.id = id;
		this.name = name;
		this.describe = describe;
		this.price = price;
	}
	   
	   public Goods() {
		// TODO Auto-generated constructor stub
	}
	@Override
	public String toString() {
		return "Goods [id=" + id + ", name=" + name + ", describe=" + describe + ", price=" + price + "]";
	}
	   
}

 IGoodsDao.java(商品数据访问接口)

package com.zking.dao;

import java.util.List;

import com.zking.pojo.Goods;
/**
 * 商品数据访问接口
 * @author zjjt
 *
 */
public interface IGoodsDao {

	List<Goods>list();
	
	Goods one(int id);
}

 GoodsDaoImpl .java(商品数据访问接口实现类)

package com.zking.dao.impl;

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

import org.apache.catalina.tribes.util.Arrays;

import com.zking.dao.IGoodsDao;
import com.zking.pojo.Goods;
import com.zking.util.DBHelper;
/**
 * 商品数据访问接口实现类
 * @author zjjt
 *
 */
public class GoodsDaoImpl implements IGoodsDao{

	private Connection con;
	private PreparedStatement ps;
	private ResultSet rs;
	
	/**
	 * 查询商品
	 */
	@Override
	public List<Goods> list() {
		List<Goods>list=new ArrayList<Goods>();
	    try {
			con=DBHelper.getCon();
			ps=con.prepareStatement("select*from car_goods ");
			rs=ps.executeQuery();
			while(rs.next()) {
				Goods goods=new Goods();
				goods.setId(rs.getInt(1));
				goods.setName(rs.getString(2));
				goods.setDescribe(rs.getString(3));
				goods.setPrice(rs.getInt(4));
				list.add(goods);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.close(con, ps, rs);
		}
		return list;
	}

	@Override
	public Goods one(int id) {
		List<Goods>list=new ArrayList<Goods>();
	    try {
			con=DBHelper.getCon();
			ps=con.prepareStatement("select*from car_goods where id=?");
			ps.setInt(1, id);
			rs=ps.executeQuery();
			if(rs.next()) {
				Goods goods=new Goods();
				goods.setId(rs.getInt(1));
				goods.setName(rs.getString(2));
				goods.setDescribe(rs.getString(3));
				goods.setPrice(rs.getInt(4));
				return goods;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.close(con, ps, rs);
		}
		return null;
	}

}

 IGoodsBiz.java(商品逻辑接口)

package com.zking.biz;

import java.util.List;

import com.zking.pojo.Goods;
/**
 * 商品逻辑接口
 * @author zjjt
 *
 */
public interface IGoodsBiz {

	List<Goods> list() ;
	Goods one(int id);
}

  GoodsBizImpl.java(商品逻辑接口实现类)

package com.zking.biz.impl;

import java.util.List;

import com.zking.biz.IGoodsBiz;
import com.zking.dao.IGoodsDao;
import com.zking.dao.impl.GoodsDaoImpl;
import com.zking.pojo.Goods;
/**
 * 商品逻辑接口实现类
 * @author zjjt
 *
 */
public class GoodsBizImpl implements IGoodsBiz{

	private IGoodsDao goodsDao=new GoodsDaoImpl();
	@Override
	public List<Goods> list() {

		return goodsDao.list();
	}
	@Override
	public Goods one(int id) {
		return goodsDao.one(id);
	}

}

七、购物车数量加减&总价计算

UpdServlet.java(处理数量加减的界面)

package com.zking.servlet;

import java.io.IOException;
import java.util.List;

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 com.zking.biz.IGoodsBiz;
import com.zking.biz.impl.GoodsBizImpl;
import com.zking.pojo.Goods;
import com.zking.pojo.OrderItem;

@WebServlet("/upd.do")
public class UpdServlet extends HttpServlet{
	

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}
	@Override
		protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		   List<OrderItem> car= (List<OrderItem>)req.getSession().getAttribute("car");
		  //拿到添加的商品编号
		   int id = Integer.parseInt(req.getParameter("id"));
		   
		   //获取需要改变的类型
		   int type = Integer.parseInt(req.getParameter("type"));
	     //购物车中已经有了

		   for(OrderItem item:car) {
			    //item 订单项中有一个与他对应的商品
			   if(item.getGoods().getId().equals(id)) {
				   //数量+1/-1
				  int count= item.getQuantity()+type;
				  if(count<1)count=1;//最少一个
				  if(count>5)count=5;//最大五个
				  item.setQuantity(count);
			       //价格需要重新计算
				  item.setTotal(item.getQuantity()*item.getGoods().getPrice());
				 // Integer total=(Integer)req.getSession().getAttribute("total");
			      // total+=type*item.getGoods().getPrice();
			       //req.getSession().setAttribute("total",total);
				req.getSession().setAttribute("total",car.stream()
	                        .mapToInt(OrderItem::getTotal)
	                       .sum());
			       break;
			    }
		   }
		  
		   //返回首页
		   resp.sendRedirect("car.jsp");

	}
}

八、删除商品

ClearServlet.java(处理删除商品的界面)

package com.zking.servlet;

import java.io.IOException;
import java.util.List;

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 com.zking.biz.IGoodsBiz;
import com.zking.biz.impl.GoodsBizImpl;
import com.zking.pojo.Goods;
import com.zking.pojo.OrderItem;

@WebServlet("/clear.do")
public class ClearServlet extends HttpServlet{
	
	private IGoodsBiz goodsBiz=new GoodsBizImpl();
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}
	@Override
		protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		   List<OrderItem> car= (List<OrderItem>)req.getSession().getAttribute("car");
	      //清空购物车
		   car.clear();
		 
		   //返回首页
		   resp.sendRedirect("car.jsp");

	}
}

九、清空购物车

ClearServlet.java(处理清空购物车的界面) 

package com.zking.servlet;

import java.io.IOException;
import java.util.List;

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 com.zking.biz.IGoodsBiz;
import com.zking.biz.impl.GoodsBizImpl;
import com.zking.pojo.Goods;
import com.zking.pojo.OrderItem;

@WebServlet("/clear.do")
public class ClearServlet extends HttpServlet{
	
	private IGoodsBiz goodsBiz=new GoodsBizImpl();
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}
	@Override
		protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		   List<OrderItem> car= (List<OrderItem>)req.getSession().getAttribute("car");
	      //清空购物车
		   car.clear();
		 
		   //返回首页
		   resp.sendRedirect("car.jsp");

	}
}

数据库建表 

car_user(用户表)

create table car_user(
    id number primary key,--用户id
    account  varchar2(30) not null,--用户账号
    password varchar(32)  not null--用户密码

);

insert into car_user
values (1, '2890@fox.com', 'ff9830c42660c1dd1942844f8069b74a');-- root123

insert into car_user
values (2, '2357@fox.com', 'e10adc3949ba59abbe56e057f20f883e');-- 123456

 car_goods(商品表)

create table car_goods
(
    id       number primary key,--商品id
    name     varchar2(20)                        not null,--商品名称
    describe varchar2(100) default '此商品暂时没有介绍🤣' not null,--商品描述
    price    number                              not null--商品价格
);

car_order(订单表)

create table car_order
(
    id      number primary key,--订单id
    user_id number not null,--用户id
    total   number not null--订单总价
);

 car_order_item(购物车订单项表)

create table car_order_item
(
    id       number primary key,--订单项编号
    order_id number not null,--订单id
    goods_id number not null,--商品id
    quantity number not null,--下单的数量
    total    number not null--订单项总价
);

今天的分享就要这结束啦!!✌

以上就是关于JavaWeb MVC购物车(1)的一些内容!!📖

期待下次再见!!😊

举报

相关推荐

javaWeb 20(MVC 购物车)

JavaWEB(MVC购物车02)

JavaWEB(MVC购物车01)

Javaweb (MVC购物车01)

JavaWeb—21 MVC购物车02

mvc购物车

MVC购物车

javaWeb购物车部分

JavaWeb-12 (购物车项目1)

0 条评论