购物车案例2

session购物车部分功能讲解

1.商品加入购物车
2.购物车商品的删除
    (1)点击删除按钮  将当前点击的id传递到do页面
    (2)获取session 遍历
        利用集合remove进行移除
    (3)重新进行保存
3.购物车商品数量的递增或递减
4.单个商品及所有商品总价格的计算
5.购物车分页实现list.subList(start,end)

 

功能实现的代码:

商品加入购物车&分页实现:

<%@page import="com.zking.cart.entity.Users"%>
<%@page import="com.zking.cart.entity.Goods"%>
<%@page import="java.util.List"%>
<%@page import="com.zking.cart.biz.impl.GoodsBizImpl"%>
<%@page import="com.zking.cart.biz.IGoodsBiz"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>购物车主页</title>
<style type="text/css">
h1 {
	color: plum
}
</style>
</head>
<body>
	<!-- 通过session默认保存一个用户 -->
	<%
		Users users = new Users(1, "tang", "1111", 1, 1000);
		//存储到session
		session.setAttribute("users", users);
	%>
 
 
 
	<h1 align="center">糖糖购物商城首页</h1>
	<hr>
	<%
		Users u = (Users) session.getAttribute("users");
	%>
	<p>
		欢迎您!<%=u.getCname()%></p>
 
	<center>
		<table border="1" width="70%">
			<tr>
				<th>商品编号</th>
				<th>商品名称</th>
				<th>商品价格</th>
				<th>商品描述</th>
				<th>商品图片</th>
				<th>商品操作</th>
			</tr>
			<%
				//调用biz层显示所有的数据
				IGoodsBiz igb = new GoodsBizImpl();
				//调用查询所有的方法
				List<Goods> listGoods = igb.queryGoodsAll();
				for (Goods goods : listGoods) {
			%>
			<tr>
				<td><%=goods.getGid()%></td>
				<td><%=goods.getGname()%></td>
				<td><%=goods.getGprice()%></td>
				<td><%=goods.getGinfo()%></td>
				<td><img src="admin/<%=goods.getGpath()%>" /></td>
				<td>
					<button onclick="addCart(<%=goods.getGid()%>)">加入购物车</button>
				</td>
			</tr>
 
			<%
				}
			%>
 
		</table>
	</center>
	<script type="text/javascript">
	//加入购物车的点击事件
	function addCart(cid){
		//alert(cid)
		location.href = "doShopping.jsp?cid="+cid;
	}
 
</script>
 
</body>
</html>

 


<%@page import="com.zking.cart.entity.Cart"%>
<%@page import="com.zking.cart.biz.impl.GoodsBizImpl"%>
<%@page import="com.zking.cart.entity.Goods"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!-- 加入购物车的do处理页面 -->
 
<%
	//将点击的商品存储到购物车容器中(session)
 
	//设置编码
	request.setCharacterEncoding("utf-8");
	//获取商品编号
	String id = request.getParameter("cid");
	int cid = 0;
	if (null != id) {
		cid = Integer.valueOf(id);
	}
 
	//拿到cid  根据cid获取商品的其它信息
	Goods goods = new GoodsBizImpl().getGoodsByCid(cid);
	//数量默认一件
	//总价格    商品的单价 * 数量(1件)
 
	//将上面获取的信息封装到Cart实体中
	Cart cart = new Cart();
	cart.setGoods(goods);
	cart.setCcount(1);
	cart.setCtotal();
 
	out.println(cart);
 
	//1.获取购物车
	List<Cart> listCarts = (List<Cart>) session.getAttribute("listCarts");
	//2.判断非空
	boolean flag = true;
	if (null == listCarts) {//说明用户时第一次将商品加入购物车  
		//创建购物车
		listCarts = new ArrayList<Cart>();
	} else {//否则  购物车中存在商品
			//遍历所有的购物车中的商品  看该购物车中是否存在刚才点击的cart实体封装
		for (Cart c : listCarts) {
			//判断传递的cid与当前listCarts中的每一个cid进行匹配
			if (cid == c.getGoods().getGid()) {//说明购物车中存在该商品
				flag = false;
				//修改数量
				c.setCcount(c.getCcount() + 1);
				//修改总价格
				c.setCtotal();
 
			}
		}
	}
	//判断flag标记
	if (flag == true) {//说明购物车中没有该商品
		listCarts.add(cart);
	}
 
	//重新保存购物车
	session.setAttribute("listCarts", listCarts);
 
	response.sendRedirect("cart.jsp");
%>
 
 

 通过商品进行删除& 商品递增和递减

<%@page import="com.zking.cart.entity.Cart"%>
<%@page import="com.zking.cart.entity.Goods"%>
<%@page import="java.util.List"%>
<%@page import="com.zking.cart.dao.impl.GoodsDaoImpl"%>
<%@page import="com.zking.cart.dao.IGoodsDao"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>购物车</title>
</head>
<body>
	<table border="1" width="100%">
		<tr>
			<th>商品编号</th>
			<th>商品名称</th>
			<th>商品价格</th>
			<th>商品描述</th>
			<th>商品图片</th>
			<th>商品数量</th>
			<th>商品总价</th>
			<th>操作</th>
		</tr>
 
		<%
			//获取购物车
			List<Cart> listCarts = (List<Cart>) session.getAttribute("listCarts");
			//定义页码
			int pageIndex = 1;
			//定义一个变量存储每页显示条数
			int pageSize = 4;
			//当用户点击下一页 获取下一页超链接参数
			String pIndex = request.getParameter("pageIndex");
			if (pIndex != null) {
				pageIndex = Integer.valueOf(pIndex);
			}
 
			//定义一个变量存储总记录数
			int pageCount = listCarts.size();
			System.out.println("总记录数: " + pageCount);
			int start = (pageIndex - 1) * pageSize;
			//sublist  参数end  没有等于
			int end = pageIndex * pageSize;
			if (end > pageCount) {
				end = pageCount;
			}
			int pageMax = pageCount / pageSize;
			if (pageCount % pageSize != 0) {
				pageMax++;
			}
 
			//调用伪分页的方法  subList(start,end);
			listCarts = listCarts.subList(start, end);
 
			for (Cart cart : listCarts) {
		%>
		<tr id="<%=cart.getGoods().getGid()%>">
			<td><%=cart.getGoods().getGid()%></td>
			<td><%=cart.getGoods().getGname()%></td>
			<td><%=cart.getGoods().getGprice()%></td>
			<td><%=cart.getGoods().getGinfo()%></td>
			<td><img src="admin/<%=cart.getGoods().getGpath()%>" /></td>
			<td>
				<button onclick="add('a',<%=cart.getGoods().getGid()%>)">-</button>
				<input type="text" style="width: 40px" value="<%=cart.getCcount()%>" />
				<button onclick="add('b',<%=cart.getGoods().getGid()%>)">+</button>
			</td>
			<td><%=cart.getCtotal()%></td>
			<td>
				<button onclick="delCart(<%=cart.getGoods().getGid()%>)">删除</button>
				<button onclick="updateCart(<%=cart.getGoods().getGid()%>)">修改</button>
			</td>
 
		</tr>
 
		<%
			}
		%>
 
	</table>
	<!-- 购物车页面实现分页 -->
	<!-- 每一页现实的商品条数4条 -->
	<p>
		[<%=pageIndex%>/<%=pageMax%>] <a href="cart.jsp?pageIndex=1">首页</a> <a
			href="cart.jsp?pageIndex=<%=pageIndex - 1 < 0 ? 1 : pageIndex - 1%>">上一页</a>
		<a
			href="cart.jsp?pageIndex=<%=pageIndex + 1 > pageMax ? pageMax : pageIndex + 1%>">下一页</a>
		<a href="cart.jsp?pageIndex=<%=pageMax%>">尾页</a>
 
 
	</p>
 
	<script type="text/javascript">
	
		function delCart(id){
			if(window.confirm("您确定要删除吗?")){
				location.href="doDel.jsp?gid="+id;
			}
		}
		
		/* 加 */
		function add(type,id){
			//根据参数id获取tr标签
			var tr = document.getElementById(id);
			//console.log(tr)
			//根据tr获取数量
			var ccount = tr.cells[5].children[1].value;
			console.log(ccount);
			if(type === 'a'){//减法
				ccount--;
			}else if(type==='b'){//加法
				ccount++;
			}
			tr.cells[5].children[1].value = ccount;
		}
		
		//修改
		function updateCart(id){
			//根据id获取到数量
			var tr = document.getElementById(id);
			var ccount = tr.cells[5].children[1].value;
			//console.log(ccount);
			location.href="doUpdate.jsp?gid="+id+"&ccount="+ccount;
		}
	
	</script>
</body>
</html>

 


<%@page import="com.zking.cart.entity.Cart"%>
<%@page import="java.util.Iterator"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
 
<%
	String id = request.getParameter("gid");
	int cid = 0;
	if (null != id) {
		cid = Integer.valueOf(id);
	}
 
	//获取购物车
	List<Cart> listCarts = (List<Cart>) session.getAttribute("listCarts");
	System.out.println(listCarts);
 
	/* for(int i = 0;i<listCarts.size();i++){
		if(cid == listCarts.get(i).getGoods().getGid()){
			listCarts.remove(i);
		}
	} */
 
	//迭代器的方式进行删除
	Iterator<Cart> its = listCarts.iterator();
	while (its.hasNext()) {
		Cart cc = its.next();
		//its.remove();
		if (cc.getGoods().getGid() == cid) {
			its.remove();
		}
	}
 
	session.setAttribute("listCarts", listCarts);
	response.sendRedirect("cart.jsp");
%>
 
 
 

商品价格结算 


<%@page import="com.zking.cart.entity.Cart"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
 
<%
	String id1 = request.getParameter("gid");
	String id2 = request.getParameter("ccount");
 
	int gid = 0;
	if (id1 != null) {
		gid = Integer.valueOf(id1);
	}
	int ccount = 0;
	if (id2 != null) {
		ccount = Integer.valueOf(id2);
	}
 
	//获取购物车
	List<Cart> listCarts = (List<Cart>) session.getAttribute("listCarts");
 
	for (Cart c : listCarts) {
		if (c.getGoods().getGid() == gid) {
			c.setCcount(ccount);
			c.setCtotal();
		}
	}
 
	session.setAttribute("listCarts", listCarts);
 
	response.sendRedirect("cart.jsp");
%>
 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值