JavaWeb购物车项目 思路&拓展&综合提升

目录

 一、实现思路

二、JSP 页面实现(临时性购物车项目)

        第一部分:images(图片)

        第二部分:SQL代码

        第三部分:代码

                 实体层(entity):

                        1.entity 包 (package com.zking.goods.entity;)

                                1.1 Users.java (用户实体类)

                        1.2 Goods.java  (商品实体类)

                        1.3 Cart.java (购物车实现类)

                数据库访问包utils (package com.zking.goods.utils;)

                        1.1 BaseDao.java 万能增删改查方法(简易)实现类

                        1.2 DBHelper.java 数据库帮助类

        业务逻辑层 BBL(biz|services):

                1.biz包代码 (package com.zking.goods.biz;)       IGoodsBiz.java (商品方法定义接口)

                2.biz包中的impl包代码  (package com.zking.goods.biz.impl;)   GoodsBizImpl.java (商品方法实现类命名)

        数据访问层 DAL   (dao):

                1.dao包代码(package com.zking.goods.dao;)       

                        1.1 IGoodsDao.java (商品方法定义接口)

        第四部分:JSP 代码 

                1.index.jsp        商品信息显示页面

                2.doShopping.jsp        购物车处理页面 

                3.cart.jsp        实现购物车界面

                4.doDel.jsp        购物车删除处理页面

                5.doUpdate.jsp (修改购物车信息的处理页面)


 一、实现思路

购物车shop

  • 前台
  1. 包括用户注册,登录  

Html +js+jsp

考虑自动登录(cookie实现  登录页面)

  1. 进入购物页面购物(数据均来自数据库),商品展示页面shop.jsp显示如下(大概显示效果如下,为了界面美观,可以加入相应的商品图片 )(该页面相当于游客页面)

 1.点击”加入购物车 的同时,要将数据(订单项的集合)保存到session中,再转入下图购物车页面cart.jsp(必须登录才能进)(大概效果如下)[从session中取出订单项集合]

    1. 其中商品数量可以在修改数量以后点击【修改】按钮进行修改
    2. 删除按钮则可以删除该购买商品(必须有提示)
    3. 点击继续购物后应该转入购物页面继续购物
    4. 点击结算后应该转入结账页面,提示用户当前购物车总金额,并清空购买信息。
    5. 订单项组成:商品基本信息Goods  数量num  单个商品的总价sumprice

  • 后台
  1. 包括对商品的管理(考虑删除的真正含义)以及 分页 下架  状态列0 1
  2. 包括对用户的管理(考虑删除的真正含义)以及 分页
  3. **思考订单&订单项(一个订单可以包含多个订单项)的概念
  4. 解决两个问题:订单项覆盖问题 加同一个商品重复问题

涉及的技术点:

 JDBC

 Entity:

  --Goods

  --User

 

Session:购物车(增删改查)

二、JSP 页面实现(临时性购物车项目)

        第一部分:images(图片)

        第二部分:SQL代码

--数据库设计 CartDB

--创建商品表
create table goods

(

gid --商品编号

gname --商品名称

gprice --商品单价

ginfo --商品描述信息

gpath --商品图片路径

)

--插入具体的数据
insert into goods values(1,'mp31',100,'mp31','images/1.jpg') ;

insert into goods values(2,'mp32',1200,'mp32','images/2.jpg') ;

insert into goods values(3,'mp33',100,'mp33','images/3.jpg') ;

insert into goods values(4,'mp34',1600,'mp34','images/4.jpg') ;

insert into goods values(5,'mp35',1500,'mp35','images/5.jpg') ;

insert into goods values(6,'mp36',1400,'mp36','images/6.jpg') ;

insert into goods values(7,'mp37',1700,'mp37','images/7.jpg') ;

insert into goods values(8,'mp38',1300,'mp38','images/8.jpg') ;

insert into goods values(9,'mp39',1500,'mp39','images/9.jpg') ;

insert into goods values(10,'mp310',1600,'mp310','images/10.jpg') ;

insert into goods values(11,'mp311',1600,'mp311','images/11.jpg');

        第三部分:代码

                 实体层(entity):

                        1.entity 包 (package com.zking.goods.entity;)

                                1.1 Users.java (用户实体类)

package com.zking.goods.entity;

public class Users {
	
	private int cid;
	private String cname;
	private String cpwd;
	private int urole;
	private float cmoney;
	
	
	
	public Users() {
		// TODO Auto-generated constructor stub
	}



	public Users(int cid, String cname, String cpwd, int urole, float cmoney) {
		super();
		this.cid = cid;
		this.cname = cname;
		this.cpwd = cpwd;
		this.urole = urole;
		this.cmoney = cmoney;
	}



	public int getCid() {
		return cid;
	}



	public void setCid(int cid) {
		this.cid = cid;
	}



	public String getCname() {
		return cname;
	}



	public void setCname(String cname) {
		this.cname = cname;
	}



	public String getCpwd() {
		return cpwd;
	}



	public void setCpwd(String cpwd) {
		this.cpwd = cpwd;
	}



	public int getUrole() {
		return urole;
	}



	public void setUrole(int urole) {
		this.urole = urole;
	}



	public float getCmoney() {
		return cmoney;
	}



	public void setCmoney(float cmoney) {
		this.cmoney = cmoney;
	}



	@Override
	public String toString() {
		return "Users [cid=" + cid + ", cname=" + cname + ", cpwd=" + cpwd + ", urole=" + urole + ", cmoney=" + cmoney
				+ "]";
	}
	
	
}

                        1.2 Goods.java  (商品实体类)

package com.zking.goods.entity;

public class Goods {
	private int gid;
	private String gname;
	private float gprice;
	private String ginfo;
	private String gpath;

	public Goods() {
		// TODO Auto-generated constructor stub
	}

	public Goods(String gname, float gprice, String ginfo, String gpath) {
		super();
		this.gname = gname;
		this.gprice = gprice;
		this.ginfo = ginfo;
		this.gpath = gpath;
	}

	public Goods(int gid, String gname, float gprice, String ginfo, String gpath) {
		super();
		this.gid = gid;
		this.gname = gname;
		this.gprice = gprice;
		this.ginfo = ginfo;
		this.gpath = gpath;
	}

	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 float getGprice() {
		return gprice;
	}

	public void setGprice(float 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;
	}

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

                        1.3 Cart.java (购物车实现类)

package com.zking.goods.entity;

public class Cart {
	private Goods goods;//对象:包含商品所有属性
	private int ccount;//数量  单个商品的数量
	private float ctotal;//单个商品的总价格
	
	public Cart() {
		// TODO Auto-generated constructor stub
	}

	public Cart(Goods goods, int ccount, float ctotal) {
		super();
		this.goods = goods;
		this.ccount = ccount;
		this.ctotal = ctotal;
	}

	public Goods getGoods() {
		return goods;
	}

	public void setGoods(Goods goods) {
		this.goods = goods;
	}

	public int getCcount() {
		return ccount;
	}

	public void setCcount(int ccount) {
		this.ccount = ccount;
	}

	public float getCtotal() {
		return ctotal;
	}
	//计算总价格
	public void setCtotal() {
		this.ctotal = this.getGoods().getGprice() * this.getCcount();
	}

	@Override
	public String toString() {
		return "Cart [goods=" + goods + ", ccount=" + ccount + ", ctotal=" + ctotal + "]";
	}
	
}

                数据库访问包utils (package com.zking.goods.utils;)

                        1.1 BaseDao.java 万能增删改查方法(简易)实现类

package com.zking.goods.utils;

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

public class BaseDao {
	//protected 访问控制符    受保护的
	protected Connection conn =null;
	protected PreparedStatement ps = null;
	protected ResultSet rs = null;
	

	/**
	 * 方法功能:通用增删改方法
	 */
	public int executeUpdate(Connection conn,String sql,Object...x) {
		int n = 0;
		try {
			// a.获取数据库连接
			conn = DBHelper.getConn();
			// b.sql传入方法返回执行对象
			ps = conn.prepareStatement(sql);
			//新增的sql语句  有占位符  
			if(null!=x) {
				//拿到可变参数中的2个值
				for(int i = 0;i<x.length;i++) {
					//System.out.println(x[i]);
					ps.setObject(i+1, x[i]);
				}
			}
			n = ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(conn, ps, null);
		}
		
		return n;
		
	}
	
	
	/**
	 * 方法功能:通用查询     查询所有  查询一个   模糊查询
	 */
	public ResultSet executeQuery(String sql,Object...x) {
		try {
			// a.获取数据库连接
			conn = DBHelper.getConn();
			// b.sql传入方法返回执行对象
			ps = conn.prepareStatement(sql);
			//新增的sql语句  有占位符  
			if(null!=x) {
				//拿到可变参数中的2个值
				for(int i = 0;i<x.length;i++) {
					//System.out.println(x[i]);
					ps.setObject(i+1, x[i]);
				}
			}
			rs = ps.executeQuery();
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			//不能关闭    通用的查询base方法  不能实现数据库关闭
			//DBHelper.myClose(conn, ps, null);
		}
		
		return rs;
		
	}
	
}

                        1.2 DBHelper.java 数据库帮助类

package com.zking.goods.utils;

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

/**
 * 数据库帮助类
 * 
 * @author Administrator
 *
 */
public class DBHelper {

	private static final String URL = "jdbc:oracle:thin:@localhost:1521:orcl";

	// 1.加载驱动 静态代码块进行封装 优先级别最高(静态代码块>普通代码块>构造函数)
	static {
		try {
			// OracleDriver
			Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	// 2.建立数据库连接
	public static Connection getConn() {
		Connection conn = null;
		try {
			conn = DriverManager.getConnection(URL, "scott", "123");
		} catch (Exception e) {
			e.printStackTrace();
		}
		return conn;
	}

	public static void main(String[] args) {
		// System.out.println(DBHelper.getConn());
	}

	// 3.关闭服务
	/**
	 * 方法功能:数据库服务关闭
	 * 
	 * @param conn
	 *            连接对象
	 * @param ps
	 *            执行对象
	 * @param rs
	 *            结果集对象
	 */
	public static void myClose(Connection conn, PreparedStatement ps, ResultSet rs) {
		try {
			if (null != conn && !conn.isClosed()) {
				conn.close();
			}
			if (null != ps) {
				ps.close();
			}
			if (null != rs) {
				rs.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

        业务逻辑层 BBL(biz|services):

                1.biz包代码 (package com.zking.goods.biz;)       IGoodsBiz.java (商品方法定义接口)

package com.zking.goods.biz;

import java.util.List;

import com.zking.goods.entity.Goods;

public interface IGoodsBiz {
	List<Goods> queryGoodsAll();
	/**
	 * 根据商品编号获取对应的信息
	 */
	Goods getGoodsByCid(int nid);
}

                2.biz包中的impl包代码  (package com.zking.goods.biz.impl;)   GoodsBizImpl.java (商品方法实现类命名)

package com.zking.goods.biz.impl;

import java.util.List;

import com.zking.goods.biz.IGoodsBiz;
import com.zking.goods.dao.IGoodsDao;
import com.zking.goods.dao.impl.GoodsDaoImpl;
import com.zking.goods.entity.Goods;

public class GoodsBizImpl implements IGoodsBiz {

	//实例化数据访问层的dao
	IGoodsDao igd = new GoodsDaoImpl();
	
	
	@Override
	public List<Goods> queryGoodsAll() {

		return igd.queryGoodsAll();
	}


	@Override
	public Goods getGoodsByCid(int cid) {
		return igd.getGoodsByCid(cid);
	}

}

        数据访问层 DAL   (dao):

                1.dao包代码(package com.zking.goods.dao;)       

                        1.1 IGoodsDao.java (商品方法定义接口)

package com.zking.goods.dao;

import java.util.List;

import com.zking.goods.entity.Goods;

public interface IGoodsDao {

	List<Goods> queryGoodsAll();
	
	/**
	 * 根据商品编号获取对应的信息
	 */
	Goods getGoodsByCid(int cid);
}

        1.2.dao包中的impl包(package com.zking.goods.dao.impl;)        GoodsDaoImpl.java (商品方法实现类)

package com.zking.goods.dao.impl;

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

import com.zking.goods.dao.IGoodsDao;
import com.zking.goods.entity.Goods;
import com.zking.goods.utils.BaseDao;

public class GoodsDaoImpl extends BaseDao implements IGoodsDao {

	@Override
	public List<Goods> queryGoodsAll() {
		// 集合
		List<Goods> list = new ArrayList<Goods>();
		// 查看所有的sql语句
		String sql = "select * from goods";
		// 通过继承的方式 来到通用查询方法
		ResultSet rs = this.executeQuery(sql);
		try {
			while (rs.next()) {
				list.add(new Goods(rs.getInt(1), rs.getString(2), rs.getFloat(3), rs.getString(4), rs.getString(5)));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return list;
	}

	public static void main(String[] args) {
//		List<Goods> queryGoodsAll = new GoodsDaoImpl().queryGoodsAll();
//		for (Goods goods : queryGoodsAll) {
//
//			System.out.println(goods);
//		}
		
		Goods goods = new GoodsDaoImpl().getGoodsByCid(1);
		System.out.println(goods);
		
	}

	@Override
	public Goods getGoodsByCid(int gid) {
		Goods goods = null;
		// 查看所有的sql语句
		String sql = "select * from goods where gid = "+gid;
		// 通过继承的方式 来到通用查询方法
		ResultSet rs = this.executeQuery(sql);
		try {
			if (rs.next()) {
				goods = new Goods(rs.getInt(1), rs.getString(2), rs.getFloat(3), rs.getString(4), rs.getString(5));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return goods;
	}

}

        当以上这些功能都实现的时候,就可以进行以下的界面操作以及界面处理的操作。

        第四部分:JSP 代码 

                1.index.jsp        商品信息显示页面

<%@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>

                2.doShopping.jsp        购物车处理页面 

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="com.zking.goods.entity.Cart"%>
<%@page import="com.zking.goods.entity.Goods"%>
<%@page import="com.zking.goods.biz.impl.GoodsBizImpl"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
	<!-- 加入购物车的do处理页面 -->
	
	<!-- 
		购物车流程:
			1.Goods---显示商品信息
			2.Cart ---购物车中的信息
			加入购物车 不是将Goods进行存储  而是存储的是Cart实体
	
	
	
	 -->
	<%
		//将点击的商品存储到购物车容器中(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
		//点击一个就加入一个
		/* session.setAttribute("cart", cart);
		response.sendRedirect("cart.jsp"); */
		//加入购物车的版本2
		/* 	
		List<Cart> listCarts = new ArrayList<Cart>();
		listCarts.add(cart);
		session.setAttribute("listCarts", listCarts);
		response.sendRedirect("cart.jsp"); 
		*/
		//加入购物车的版本3
		//将商品加入购物车之前,先要获取购物车
		//假设   假设购物车的标记   listCarts
		//1.获取购物车
		//session.getAttribute("listCarts"); 如果不存在  结果:null
		/* List<Cart> listCarts = (List<Cart> )session.getAttribute("listCarts");
		//List<Cart> listCarts = null;
		//2.判断  如果购物车为null   则创建一个
		if(listCarts == null){
			//创建一个购物车容器
			listCarts = new ArrayList<Cart>();
		}
		listCarts.add(cart);
		session.setAttribute("listCarts", listCarts);
		response.sendRedirect("cart.jsp");  */
		
		//问题:当点击同一件商品时,如果购物车中存在,不会修改数量,只会重新添加
		//解决这个问题
		
		//版本4
		//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");
	%>

                3.cart.jsp        实现购物车界面

<%@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>
	<%
//java代码
		//获取购物车
		//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>
<!-- 购物车页面实现分页 -->
<!-- 每一页现实的商品条数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>
</body>
</html>

                4.doDel.jsp        购物车删除处理页面

<%@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");
		
		
	
	%>
	

                5.doUpdate.jsp (修改购物车信息的处理页面)

<%@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");
	%>
	
	
	

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值