JavaWEB15EL+JSTL实现购物车

一.修改思路

二. 完整的购物车项目(EL+JSTL)

2.1购物车界面代码:

<c:if test="${not empty listCarts}">

			<c:forEach items="${listCarts }" var="ls" begin="${start }"
				end="${end }">
				<tr id="${ls.getGoods().getGid() }">
					<td><input type="checkbox"></td>
					<td>${ls.getGoods().getGname()}</td>
					<td>${ls.getGoods().getGtype() }</td>
					<td><img style="width: 70px; height: 50px"
						src="${ls.getGoods().getGimage() }"></td>
					<td>${ls.getGoods().getGprice() }</td>

					<td><button
							onclick="setcount('minus',${ls.getGoods().getGid() })">-</button>
						<input style="width: 50px" type="text" value="${ls.getCount()}" />
						<button onclick="setcount('add',${ls.getGoods().getGid() })">+</button></td>
					<td>${ls.getZj() }</td>
					<td>

						<button onclick="del(${ls.getGoods().getGid() })">删除</button>
						<button onclick="update(${ls.getGoods().getGid() })">修改</button>
					</td>
					<button onclick="jiesuan(${ls.getGoods().getGid() })">结算
				</tr>

			</c:forEach>

		</c:if>



	</table>
	<div style="text-align: left;">
		<button onclick="delChecked()">删除所选</button>
		<button onclick="jsChecked()">结算所选</button>
	</div>
	<div style="text-align: right;">
		《${pageIndex }/${pageMax }》 <a
			href="doShooping_fy.jsp?pageIndex=${pageIndex-1<1?1:pageIndex-1 }">上一页</a>
		<a
			href="doShooping_fy.jsp?pageIndex=${pageIndex+1>pageMax?pageMax:pageIndex+1 }">下一页</a>
	</div>


	<script type="text/javascript">

function del(gid) {
	
	window.location.href="dode.jsp?gid="+gid+"";
	
}


//数量加减
function setcount(type,gid) {
	
	 var tr=document.getElementById(gid);
	
	 var count=tr.cells[5].children[1].value;
	
	
	 if(type==='jj'){
		if(count<=1){
			alert("不能少于一件商品");
		}else {
			count--;
		}
		
	}else if(type==='add'){
		count++;
	} 
	
	tr.cells[5].children[1].value=count;
	
	calc();  
	
}

//统计总价
function calc() {
	var oTabCart=document.getElementById("oTabCart");
	
	var trs=oTabCart.rows;
	
	 for(var i=1;i<trs.length;i++){
		//单价
		var gprice=trs[i].cells[4].innerHTML;
		//数量
		var counts=trs[i].cells[5].children[1].value;
		
		var ctotal=parseFloat(gprice)*parseFloat(counts);
		
		trs[i].cells[6].innerHTML=ctotal;
		
		
	} 
	
}

function update(gid) {
	
	var ccount =document.getElementById(gid).cells[5].children[1].value;
	
	location.href="doxg.jsp?gid="+gid+"&ccount="+ccount+"";
}

window.onload=function(){
	
	//全选
document.getElementById("All").onclick=function(){
	var all=document.getElementById("All");
	var checks=document.getElementsByName("check");
	for(var i=0;i<checks.length;i++){
		checks[i].checked=all.checked;
	}
	
	}


};
//完善全选
function setChecked(){
	var flag=true;
	var all=document.getElementById("All");
	var checks=document.getElementsByName("check");
	for(var i=0;i<checks.length;i++){
		if(checks[i].checked==false){
			flag=false;
		}
	}
	all.checked=flag;
	
}
//删除所选
function delChecked(){
	
	var checkeds=document.getElementsByName("check");
	for(var i=0;i<checkeds.length;i++){
		if(checkeds[i].checked==true){
			//console.log(checkeds[i].parentElement.parentElement.id);
			var gid=checkeds[i].parentElement.parentElement.id
			del(gid);
		}
	}
}
function jsChecked(){
	var checkeds=document.getElementsByName("check");
		var count=0;
	for(var i=0;i<checkeds.length;i++){
		if(checkeds[i].checked==true){
			
			var gid=checkeds[i].parentElement.parentElement.id;
			var total= document.getElementById(gid).cells[6].innerHTML;
			
			count+=parseInt(total);
			//window.location.href="dodel.jsp?gid="+gid+"";	
			del(gid);
		}
	}
			alert("你一共消费"+count+"元");
			
}
//计算总价
function setTotal(){
	var tb=document.getElementById("oTab");
	var trs=tb.rows;
	  for(var i=1;i<trs.length;i++){
		  //价格
		var price=trs[i].cells[4].innerHTML;
		//数量
		var count=trs[i].cells[5].children[1].value;
		
		trs[i].cells[6].innerHTML=price*count;
		
		}  
}
function update(gid,count){
	var count=document.getElementById(gid).cells[5].children[1].value;
	 window.location.href="doupdate.jsp?gid="+gid+"&count="+count+"";
}

function jiesuan(gid){
	 var cof=confirm("你确定要结算该商品吗?");
	 if(cof==true){
		var total= document.getElementById(gid).cells[6].innerHTML;
		alert("你一共消费"+total+"元");
		window.location.href="dodel.jsp?gid="+gid+"";	
	 }
}


</script>

2.2do界面代码

(1)doshooping(显示分页)

<%
	request.setCharacterEncoding("utf-8");

	List<Cart> list = (List<Cart>) session.getAttribute("listCarts");
	String index = request.getParameter("pageIndex");
	int pageIndex = 1;
	if (index != null) {
		pageIndex = Integer.valueOf(index);
	}
	int pageSize = 3;
	//设置开始值
	int start = (pageIndex - 1) * pageSize;
	//设置结束
	int counts = list.size();
	int end = 0;
	if (pageIndex == 1) {
		if (pageIndex * pageSize - 1 > counts) {
			end = counts;
		}
		end = pageIndex * pageSize - 1;
	} else {
		if (pageIndex * pageSize > counts) {
			end = counts;
		}
		end = pageIndex * pageSize;
	}
	//最大页码
	int pageMax = counts % pageSize == 0 ? counts / pageSize : counts / pageSize + 1;

	session.setAttribute("start", start);
	session.setAttribute("end", end);
	session.setAttribute("pageMax", pageMax);
	session.setAttribute("pageIndex", pageIndex);

	response.sendRedirect("gwc.jsp");
%>

(2)doadd(添加)

<%
	request.setCharacterEncoding("utf-8");

	String id = request.getParameter("gid");
	int gid = 0;
	if (id != null) {
		gid = Integer.valueOf(id);
	}

	Goodsbiz g = new Goodsbiz();

	Goods good = g.ckdg(gid);

	Cart cart = new Cart();
	cart.setGoods(good);
	cart.setCount(1);
	cart.setZj();

	List<Cart> listCarts = (List<Cart>) session.getAttribute("listCarts");
	boolean flag = true;
	if (listCarts == null) {
		//构建一个购物车
		listCarts = new ArrayList<Cart>();

	} else {
		for (Cart ct : listCarts) {
			if (ct.getGoods().getGid() == gid) {
				ct.setCount(ct.getCount() + 1);
				ct.setZj();
				flag = false;
			}
		}
	}
	if (flag == true) {
		listCarts.add(cart);
	}

	session.setAttribute("listCarts", listCarts);

	response.sendRedirect("doShooping_fy.jsp");
%>

(3)dodel( 删除购物车商品)

<%
	request.setCharacterEncoding("utf-8");

	String id = request.getParameter("gid");
	int gid = 0;
	if (id != null) {
		gid = Integer.valueOf(id);
	}

	List<Cart> listCarts = (List<Cart>) session.getAttribute("listCarts");

	for (int i = 0; i < listCarts.size(); i++) {
		if (listCarts.get(i).getGoods().getGid() == gid) {
			listCarts.remove(i);

		}
	}
	session.setAttribute("listCarts", listCarts);

	response.sendRedirect("gwc.jsp");
%>

(4)doxg(购物车修改——数量 价格改变)

<%
	request.setCharacterEncoding("utf-8");

	String id = request.getParameter("gid");
	int gid = 0;
	if (id != null) {
		gid = Integer.valueOf(id);
	}

	String count = request.getParameter("ccount");

	int ccount = 0;
	if (count != null) {
		ccount = Integer.valueOf(count);
	}

	List<Cart> listCarts = (List<Cart>) session.getAttribute("listCarts");

	for (int i = 0; i < listCarts.size(); i++) {
		if (listCarts.get(i).getGoods().getGid() == gid) {
			listCarts.get(i).setCount(ccount);
			listCarts.get(i).setZj();

		}
	}
	session.setAttribute("listCarts", listCarts);

	response.sendRedirect("gwc.jsp");
%>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值