mvc购物车

实体类:

package com.zking.mvc.cart.entiy;

import java.io.Serializable;

/**
 * 商品实体
 * 
 *
 * 2022年4月21日下午6:29:33
 */
public class Goods implements Serializable{
	
	private static final long serialVersionUID = 172021583561153335L;
	
	private int gid;
	private String gname;
	private int gprice;
	private String ginfo;
	private String gpath;
	private String gzt;
	
	
	public int getGid() {
		return gid;
	}
	public void setGid(int gid) {
		this.gid = gid;
	}
	public String getGname() {
		return gname;
	}
	public void setGname(String gname) {
		this.gname = gname;
	}
	public int getGprice() {
		return gprice;
	}
	public void setGprice(int gprice) {
		this.gprice = gprice;
	}
	public String getGinfo() {
		return ginfo;
	}
	public void setGinfo(String ginfo) {
		this.ginfo = ginfo;
	}
	public String getGpath() {
		return gpath;
	}
	public void setGpath(String gpath) {
		this.gpath = gpath;
	}
	public String getGzt() {
		return gzt;
	}
	public void setGzt(String gzt) {
		this.gzt = gzt;
	}
	
	public Goods() {
		// TODO Auto-generated constructor stub
	}
	public Goods(int gid, String gname, int gprice, String ginfo, String gpath, String gzt) {
		this.gid = gid;
		this.gname = gname;
		this.gprice = gprice;
		this.ginfo = ginfo;
		this.gpath = gpath;
		this.gzt = gzt;
	}

	
	public Goods(String gname, int gprice, String ginfo, String gpath, String gzt) {
		this.gname = gname;
		this.gprice = gprice;
		this.ginfo = ginfo;
		this.gpath = gpath;
		this.gzt = gzt;
	}
	@Override
	public String toString() {
		return "Goods [gid=" + gid + ", gname=" + gname + ", gprice=" + gprice + ", ginfo=" + ginfo + ", gpath=" + gpath
				+ ", gzt=" + gzt + "]";
	}

	
	
	
}

购物车实体类

package com.zking.mvc.cart.entiy;

import java.io.Serializable;

public class Cart implements Serializable{
	
	private static final long serialVersionUID = 2576568634303648340L;
	
	
	private int cid;
	private Goods goods;
	private User user;
	private int ccount;
	private int ctotal;
	public int getCid() {
		return cid;
	}
	public void setCid(int cid) {
		this.cid = cid;
	}
	public Goods getGoods() {
		return goods;
	}
	public void setGoods(Goods goods) {
		this.goods = goods;
	}
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	public int getCcount() {
		return ccount;
	}
	public void setCcount(int ccount) {
		this.ccount = ccount;
	}
	public int getCtotal() {
		return ctotal;
	}
	public void setCtoal() {
		this.ctotal = this.getGoods().getGprice()*this.getCcount();
	}
	
	public Cart() {
		// TODO Auto-generated constructor stub
	}
	
	public Cart(int cid, Goods goods, User user, int ccount, int ctotal) {
		this.cid = cid;
		this.goods = goods;
		this.user = user;
		this.ccount = ccount;
		this.ctotal = ctotal;
	}
	
	public Cart(Goods goods, User user, int ccount, int ctotal) {
		this.goods = goods;
		this.user = user;
		this.ccount = ccount;
		this.ctotal = ctotal;
	}
	
	
	@Override
	public String toString() {
		return "Cart [cid=" + cid + ", goods=" + goods + ", user=" + user + ", ccount=" + ccount + ", ctoal=" + ctotal
				+ "]";
	}
	
	
	
	
	
}

---------------------------------

dao方法

商品Goodsdao

package com.zking.mvc.cart.dao.impl;

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

import com.zking.mvc.cart.entiy.Goods;
import com.zking.mvc.cart.utils.DBHelper;

public class GoodsDaoimpl implements IGoodsDao {

	@Override
	public List<Goods> queryGoodsAll() {
		// TODO Auto-generated method stub
		//1.定义对应的三兄弟以及其他相关变量
		Connection con = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		String sql = "";
		Goods goods = null;
		List<Goods> list = new ArrayList<Goods>();
		//2.给对应的对象以及其他相关变量
		try {
			//获取连接
			con = DBHelper.getCon();
			//定以sql语句
			sql = "select * from tb_goods";
			//执行sql语句
			ps = con.prepareStatement(sql);
			//获得结果集
			rs = ps.executeQuery();
			//遍历结果集
			while(rs.next()) {
				//实例化
				goods = new Goods();
				//赋值
				goods.setGid(rs.getInt(1));
				goods.setGname(rs.getString(2));
				goods.setGprice(rs.getInt(3));
				goods.setGinfo(rs.getString(4));
				goods.setGpath(rs.getString(5));
				goods.setGzt(rs.getString(6));
				//加到集合中
				list.add(goods);
				
			}
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		//3.返回结果集
		return list;
	}

	
	
	@Override
	public Goods getGoodsByGid(int gid) {
		// TODO Auto-generated method stub
		//1.定义对应的三兄弟以及其他相关变量
		Connection con = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		String sql = "";
		//实例化
		Goods goods = new Goods();

		//2.给对应的对象以及其他相关变量
		try {
			//获取连接
			con = DBHelper.getCon();
			//定以sql语句
			sql = "select * from tb_goods where gid=?";
			//执行sql语句
			ps = con.prepareStatement(sql);
			//给占位符赋值
			ps.setInt(1, gid);
			//获得结果集
			rs = ps.executeQuery();
			//遍历结果集
			while(rs.next()) {
				//赋值
				goods.setGid(rs.getInt(1));
				goods.setGname(rs.getString(2));
				goods.setGprice(rs.getInt(3));
				goods.setGinfo(rs.getString(4));
				goods.setGpath(rs.getString(5));
				goods.setGzt(rs.getString(6));
			}
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		//3.返回结果集
		return goods;
	}

	
	
	
	
//	public static void main(String[] args) {
//		System.out.println(new GoodsDaoimpl().queryGoodsAll());
//	}
	
	
	
	
}

iGoodsdao类

package com.zking.mvc.cart.dao.impl;

import java.util.List;

import com.zking.mvc.cart.entiy.Goods;

/**
 * 
 * 数据库访问层
 * 商品信息功能接口
 * @author 
 *
 * 2022年4月21日下午6:34:48
 */
public interface IGoodsDao {

	/**
	 * 方法功能:查询所有的商品信息
	 * 无参数
	 * list 商品集合
	 */
	List<Goods> queryGoodsAll();
	
	
	/**
	 * 查询单个
	 * @param gid  商品编号
	 * @return 返回行数
	 */
	 Goods getGoodsByGid(int gid);
	
	
}

购物车Cartdao

package com.zking.mvc.cart.dao.impl;

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

import com.zking.mvc.cart.entiy.Cart;
import com.zking.mvc.cart.entiy.User;
import com.zking.mvc.cart.utils.DBHelper;

public class CartDaoimpl implements ICartDao {

	@Override
	public int addCart(Cart cart) {
		// TODO Auto-generated method stub
		//1.定义对应的三兄弟以及其他相关变量
		Connection con = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		int n = 0;
		String sql = "";
		//2.给对应的对象以及其他相关变量
		try {
			//获取连接
			con = DBHelper.getCon();
			//定以sql语句
			sql = "insert into tb_cart " + "select nvl(max(cid),0)+1 ,?,?,?,? from tb_cart";
			//执行sql语句
			ps = con.prepareStatement(sql);
			//给占位符赋值
			ps.setInt(1, cart.getGoods().getGid());
			ps.setInt(2, cart.getUser().getUserid());
			ps.setInt(3, cart.getCcount());
			ps.setInt(4, cart.getCtotal());
			//返回执行行数
			n = ps.executeUpdate();
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, null);
		}
		//返回结果集
		return n;
	}

	@Override
	public List<Cart> getCartByuserid(int userid) {
		// TODO Auto-generated method stub
		//1.定义对应的三兄弟以及其他相关变量
		Connection con = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		String sql = "";
		Cart c = null;
		List<Cart> list = new ArrayList<Cart>();
		//2.给对应的对象以及其他相关变量
		try {
			//获取连接
			con = DBHelper.getCon();
			//定以sql语句
			sql = "select * from tb_cart where userid = ?";
			//执行sql语句
			ps = con.prepareStatement(sql);
			//给占位符赋值
			ps.setInt(1, userid);
			//获得结果集
			rs = ps.executeQuery();
			//遍历结果集
			while(rs.next()) {
				c = new Cart();
				c.setCid(rs.getInt(1));
				c.setGoods(new GoodsDaoimpl().getGoodsByGid(rs.getInt(2)));
				//更新
				c.setUser(new User(rs.getInt(3),"刘太阳","110"));
				c.setCcount(rs.getInt(4));
				c.setCtoal();
				
				list.add(c);
			
			}
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, null);
		}
		//返回结果集
		return list;
	}

	
	
	@Override
	public int editCartByCidAndUserid(Cart cart) {
		// TODO Auto-generated method stub
		//1.定义对应的三兄弟以及其他相关变量
		Connection con = null;
		PreparedStatement ps = null;
		int n = 0;
		String sql = "";
		//2.给对应的对象以及其他相关变量
		try {
			//获取连接
			con = DBHelper.getCon();
			//定以sql语句
			sql = "update tb_cart set ccount=?,ctotal=? where cid=? and userid=?";
			//执行sql语句
			ps = con.prepareStatement(sql);
			//给占位符赋值
			ps.setInt(1, cart.getCcount());
			ps.setInt(2, cart.getCtotal());
			ps.setInt(3, cart.getCid());
			ps.setInt(4, cart.getUser().getUserid());
			//返回执行行数
			n = ps.executeUpdate();
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, null);
		}
		return n;
	}

	@Override
	public int delCart(int uid) {
		// TODO Auto-generated method stub
		//1.定义对应的三兄弟以及其他相关变量
		Connection con = null;
		PreparedStatement ps = null;
		int n = 0;
		String sql = "";
		//2.给对应的对象以及其他相关变量
		try {
			//获取连接
			con = DBHelper.getCon();
			//定以sql语句
			sql = "delete from tb_cart where userid="+uid;
			//执行sql语句
			ps = con.prepareStatement(sql);
			//返回执行行数
			n = ps.executeUpdate();
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, null);
		}
		return n;	}

}

购物车ICartdao

package com.zking.mvc.cart.dao.impl;

import java.util.List;

import com.zking.mvc.cart.entiy.Cart;

public interface ICartDao {
	
	/**
	 * 加入购物车
	 * 购物车实体类
	 * n 影响的行数
	 * 
	 */
	
	int addCart(Cart cart);
	
	
	/**
	 * 方法功能:根据指定的登陆用户id查找对应的购物车
	 * userid 用户 id
	 * 
	 */
	List<Cart> getCartByuserid(int userid);
	
	/**
	 * 根据用户id和购物车编号修改商品数量
	 * @param cart
	 * @return
	 */
	int editCartByCidAndUserid(Cart cart);
	
	
	/**
	 * 根据用户id和购物车编号删除商品数量
	 * @param cart
	 * @return
	 */
	int delCart(int uid);

	
}

---------------------------------------------------------

商品购物逻辑层

package com.zking.mvc.cart.biz.impl;

import java.util.List;

import com.zking.mvc.cart.dao.impl.GoodsDaoimpl;
import com.zking.mvc.cart.dao.impl.IGoodsDao;
import com.zking.mvc.cart.entiy.Goods;

public class GoodsBizimpl implements IGoodsBiz {

	//直接实例化数据访问层
	private IGoodsDao igd = new GoodsDaoimpl();
	
	
	@Override
	public List<Goods> queryGoodsAll() {
		// TODO Auto-generated method stub
		
		return igd.queryGoodsAll();
	}
	
	
	@Override
	public Goods getGoodsByGid(int gid) {
		// TODO Auto-generated method stub
		return igd.getGoodsByGid(gid);
	}

}
package com.zking.mvc.cart.biz.impl;

import java.util.List;

import com.zking.mvc.cart.entiy.Goods;

public interface IGoodsBiz {

	/**
	 * 方法功能:查询所有的商品信息
	 * 无参数
	 * list 商品集合
	 */
	List<Goods> queryGoodsAll();
	
	
	/**
	 * 查询单个
	 * @param gid  商品编号
	 * @return 返回行数
	 */
	public Goods getGoodsByGid(int gid);

	
	
}

购物车业务逻辑层

package com.zking.mvc.cart.biz.impl;

import java.util.List;

import com.zking.mvc.cart.entiy.Cart;

public interface ICartBiz {

	/**
	 * 加入购物车
	 * 购物车实体类
	 * n 影响的行数
	 * 
	 */
	
	int addCart(Cart cart);
	
	/**
	 * 方法功能:根据指定的登陆用户id查找对应的购物车
	 * userid 用户 id
	 * 
	 */
	List<Cart> getCartByuserid(int userid);

	/**
	 * 根据用户id和购物车编号修改商品数量
	 * @param cart
	 * @return
	 */
	int editCartByCidAndUserid(Cart cart);

	
	
	/**
	 * 根据用户id和购物车编号删除商品数量
	 * @param cart
	 * @return
	 */
	int delCart(int uid);
	
}
package com.zking.mvc.cart.biz.impl;

import java.util.List;

import com.zking.mvc.cart.dao.impl.CartDaoimpl;
import com.zking.mvc.cart.dao.impl.ICartDao;
import com.zking.mvc.cart.entiy.Cart;

public class CartBizimpl implements ICartBiz {

	private ICartDao icd = new CartDaoimpl();
	
	
	@Override
	public int addCart(Cart cart) {
		// TODO Auto-generated method stub
		return icd.addCart(cart);
	}

	@Override
	public List<Cart> getCartByuserid(int userid){
		// TODO Auto-generated method stub
		return icd.getCartByuserid(userid);
	}

	@Override
	public int editCartByCidAndUserid(Cart cart) {
		// TODO Auto-generated method stub
		return icd.editCartByCidAndUserid(cart);
	}

	@Override
	public int delCart(int uid) {
		// TODO Auto-generated method stub
		return icd.delCart(uid);
	}

}

Servlet

package com.zking.mvc.cart.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 javax.servlet.http.HttpSession;

import com.zking.mvc.cart.biz.impl.GoodsBizimpl;
import com.zking.mvc.cart.biz.impl.IGoodsBiz;
import com.zking.mvc.cart.entiy.Goods;
import com.zking.mvc.cart.entiy.User;

@WebServlet("/GoodsLisetServlet")
public class GoodsLisetServlet extends HttpServlet {

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doPost(request, response);
	
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//servlet作用:负责处理用户的请求以及响应
		
		//1.设置字符集编码
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		//2.获取参数 省略
		//3.封装 调用biz判断
		IGoodsBiz igb = new GoodsBizimpl();
		List<Goods> listGoods = igb.queryGoodsAll();
		
		
		//数据要保存在与域对象中
		//获取域对象 session
		HttpSession session = request.getSession();
		session.setAttribute("listGoods", listGoods);
		
		//默认保存一个登陆用户
		User users = new User(1,"刘太阳","110");
		session.setAttribute("users", users);
		
		//获取当前项目的绝对路径
		String path = request.getServletContext().getContextPath();//获取绝对路径
		//4.响应
		response.sendRedirect("index.jsp");
		
		
		
		
	}

}
package com.zking.mvc.cart.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 javax.servlet.http.HttpSession;

import com.zking.mvc.cart.biz.impl.CartBizimpl;
import com.zking.mvc.cart.biz.impl.GoodsBizimpl;
import com.zking.mvc.cart.biz.impl.ICartBiz;
import com.zking.mvc.cart.biz.impl.IGoodsBiz;
import com.zking.mvc.cart.entiy.Cart;
import com.zking.mvc.cart.entiy.Goods;
import com.zking.mvc.cart.entiy.User;


@WebServlet("/AddCartServlet")
public class AddCartServlet extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//jrebel 热部署启动插件
		//加入购物车的servlet
		//System.out.print("造孽呀!!!");
		//1.设置字符集编码
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		//2.获取location带过来的id
		String id = request.getParameter("gid");
		int gid = 0;
		if(id!=null) {
			gid = Integer.valueOf(id);
		}
		
		//数据封装
		Cart c = new Cart();
		//将gid userid  ccount ctotal 封装cart 实体对象
		IGoodsBiz igb = new GoodsBizimpl();
		Goods goods = igb.getGoodsByGid(gid);
		
		//userid
		HttpSession session = request.getSession();
		User ur = (User)session.getAttribute("users");
		c.setGoods(goods);
		c.setUser(ur);
		c.setCcount(1); 
		c.setCtoal();;
		
		//要想将封装好的购物车信息 保存到数据库中
		//先获取当前这个登陆的用户的购物车
		ICartBiz icb = new CartBizimpl();
		List<Cart> listCart = icb.getCartByuserid(ur.getUserid());
		
		//如果购物车为空List<Cart> listCarts = null;
		boolean f = true;
		//如果该用户是第一次进入 构建一个新的购物车 实例化
		if(null==listCart) {
			listCart = new ArrayList<Cart>();
		}
		else {
			//非第一次
			//遍历所有的商品
			for(Cart cart:listCart) {
				//判断当前加入的与购物车中已有的进行匹配
				if(cart.getGoods().getGid()==c.getGoods().getGid()) {
					//不需要重复添加 修改数量及总价即可
					cart.setCcount(cart.getCcount()+1);
					cart.getCtotal();
					//进行一个数据库的更新
					icb.editCartByCidAndUserid(cart);
					f = false;
					break;
				}
			}
			
		}
		//问题:加入购物车不是加入集合  而是加入数据库
		//listCart.add(c);
		if(f) {
			icb.addCart(c);
		}
		//加入后数据要继续更新
		listCart =  icb.getCartByuserid(ur.getUserid());
		
		session.setAttribute("listCart", listCart);
		
		
		
		response.sendRedirect("cart.jsp");
		
		
	}

}

商品主界面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!--通过taglib标准标签库  -->    
  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE html >
<html>
<head>
<meta  charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<!-- 通过c标签判断是否在域对象中存在数据 -->
	<c:if test="${empty listGoods }">
		<jsp:forward page="GoodsLisetServlet"></jsp:forward>
	</c:if>

	<h2 style="text-align: center;"></h2>
	<hr/>
	<p>欢迎你!尊敬的先生 ----${users.username }</p>
	<table border = "1" width="100%">
		<tr>
			<td>商品编号</td>
			<td>商品名称</td>
			<td>商品价格</td>
			<td>商品描述</td>
			<td>商品图片</td>
			<td>操作</td>
		</tr>
		<!--通过c标签遍历数据  -->
		<c:forEach items="${listGoods }" var ="goods">
			<tr>
				<td>${goods.gid }</td>
				<td>${goods.gname }</td>
				<td>${goods.gprice }</td>
				<td>${goods.ginfo }</td>
				<td><img src="${goods.gpath }" width="80" height="50" /></td>
				<td><a href="AddCartServlet?gid=${goods.gid }">加入购物车</a></td>

			</tr>
		</c:forEach>
	
	</table>





</body>
</html>

购物车主界面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <!--通过taglib标准标签库  -->    
  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    
<!DOCTYPE html >
<html>
<head>
<meta  charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>我的购物车</h1>
	<a href="index.jsp">返回</a>
	<table border = "1" width="100%">
		<tr>
			<td>购物车编号</td>
			<td>商品名称</td>
			<td>商品价格</td>
			<td>商品描述</td>
			<td>商品图片</td>
			<td>商品数量</td>
			<td>商品总价</td>
			<td>操作</td>
		</tr>
		<!--通过c标签遍历数据  -->
		<c:forEach items="${listCart }" var ="cart">
			<tr>
				<td>${cart.cid }</td>
				<td>${cart.goods.gname }</td>
				<td>${cart.goods.gprice }</td>
				<td>${cart.goods.ginfo }</td>
				<td><img src="${cart.goods.gpath }" width="80" height="50" /></td>
				<td>${cart.ccount }</td>
				<td>${cart.ctotal}</td>
				<td>
					<a href="#">删除</a>
					<a href="#">修改</a>
				</td>

			</tr>
		</c:forEach>
	
	</table>
<p style="text-align: right;">
	<button onclick="buy()" style="background:green;color:red;font-weight: bold;width: 100px;height: 60px;border-radius: 30px;cursor: pointer;">结算</button>



</p>

<script type="text/javascript">
	function buy(){
		location.href="FindCartInfoServlet";
	}


</script>



</body>
</html>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值