JavaWeb-13 (购物车项目2)

22 篇文章 1 订阅
本文展示了使用JSP实现商城首页,包括用户欢迎信息、商品列表展示以及商品图片。同时,详细说明了商品加入购物车的处理,包括购物车的分页显示、商品数量的增减以及删除和修改操作。代码中涉及了session存储用户信息,biz层调用查询所有商品,以及JavaScript处理页面交互逻辑。
摘要由CSDN通过智能技术生成

一.商城首页的实现

<%@page import="com.zking.goods.entity.Goods"%>
<%@page import="java.util.List"%>
<%@page import="com.zking.goods.biz.IGoodsBiz"%>
<%@page import="com.zking.goods.biz.impl.GoodsBizImpl"%>
<%@page import="com.zking.goods.entity.Users"%>
<%@ 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>Insert title here</title>
</head>
<body>
<!-- 通过session默认保存一个用户 -->
<%
	Users users = new Users(1,"zz","123",1,1000);
	//存储到session
	session.setAttribute("users", users);
%>

<h3>zz购物商城首页</h3>
<% Users u = (Users)session.getAttribute("users"); %>
<p>欢迎您!<%=u.getCname() %></p>

<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 = "<%=goods.getGpath()%>"/></td>
		<td>
			<button onclick="addCart(<%=goods.getGid()%>)">加入购物车</button>
		</td>
		</tr>
	
	<%		
		}
	
	%>

</table>
<script type="text/javascript">
	//加入购物车的点击事件
	function addCart(cid){
		//alert(cid)
		location.href = "doShopping.jsp?cid="+cid;
	}

</script>

</body>
</html>

二.商品加入购物车

<%@page import="java.util.List"%>
<%@page import="com.zking.goods.entity.Cart"%>
<%@ 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>Insert title here</title>
</head>
<body>
	<h2>我的购物车</h2>
	<a href = "index.jsp">返回首页</a>
	<hr/>
	<table border ="1" width = "70%">
	<tr>
		<th>编号</th>
		<th>名称</th>
		<th>价格</th>
		<th>图片</th>
		<th>数量</th>
		<th>总价格</th>
		<th>操作</th>
	</tr>
	<%
		//获取购物车
		//Cart cart = (Cart)session.getAttribute("cart");
		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);
		//pageIndex = 1    0-3  0 1 2 3
		//pageIndex = 2    4-7  4  5  6   7
		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><img src = "<%=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>

</body>
</html>

三.购物车页面的分页显示

<!-- 购物车页面实现分页 -->
<!-- 每一页现实的商品条数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[4].children[1].value;
			console.log(ccount);
			if(type === 'a'){//减法
				ccount--;
			}else if(type==='b'){//加法
				ccount++;
			}
			tr.cells[4].children[1].value = ccount;
		}
		
		function updateCart(id){
			//根据id获取到数量
			var tr = document.getElementById(id);
			var ccount = tr.cells[4].children[1].value;
			//console.log(ccount);
			location.href="doUpdate.jsp?gid="+id+"&ccount="+ccount;
		}
	
	</script>

四.删除|修改功能

//删除的do处理页面

<%@page import="java.util.Iterator"%>
<%@page import="com.zking.goods.entity.Cart"%>
<%@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");
		
		
	
	%>
	
	

//修改的do处理页面

<%@page import="com.zking.goods.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");
	%>
	
	
	
	
	

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值