javaweb——通过session实现购物车功能

目录

session实现购物车

1.首页布局

2.点击加入购物车跳转到do处理页面

3.进行一个购物车布局,实现购物车相关功能


session实现购物车

1.首页布局

对商城首页进行排版

商品会有加入购物车功能会传递商品id

<%@page import="com.ys.cart.entity.Goods"%>
<%@page import="com.ys.cart.biz.impl.GoodsBizImpl"%>
<%@page import="com.ys.cart.biz.IGoodsBiz"%>
<%@page import="com.ys.cart.entity.Users"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>




Insert title here


	
	<%
					request.setCharacterEncoding("utf-8");
					//获取usernmae
					String username = request.getParameter("username");
					if(null!=username){
						out.println("欢迎你回来!  "+username+"");
					}else{
						out.println("【登录】");
					}
				%>
	<%
		Users users = new Users(1, "ys", "123", "男", 1, 1000, "date");
		//存储到session
		session.setAttribute("users", users);
	%>

	

ys购物商城首页

<% Users u = (Users) session.getAttribute("users"); %>

欢迎您!<%=u.getUsername()%>

<% //调用biz层显示所有的数据 IGoodsBiz igb = new GoodsBizImpl(); //调用查询所有的方法 List listGoods = igb.queryGoodsAll(); for (Goods goods : listGoods) { %> <% } %>
编号 名称 价格 描述 图片 操作
<%=goods.getGid()%> <%=goods.getGname()%> <%=goods.getGprice()%> <%=goods.getGinfo()%>

2.点击加入购物车跳转到do处理页面

拿到传递的商品id可以拿到商品所有信息,

加入购物车默认为一件商品,

创建list集合成为购物车(首次肯定为空会进行判断)

不为空时会进行判断是否存在相同的商品(存在时商品数量+1,就不用添加到购物车)

否则将商品添加到购物车实体,保存在session中的list集合

<%@page import="com.ys.cart.entity.Cart"%>
<%@page import="com.ys.cart.entity.Goods"%>
<%@page import="com.ys.cart.biz.impl.GoodsBizImpl"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>



<%
	//将点击的商品存储到购物车容器中(session)

	//设置编码
	request.setCharacterEncoding("utf-8");
	//获取商品编号
	String id = request.getParameter("gid");
	int gid = 0;
	if (null != id) {
		gid = Integer.valueOf(id);
	}

	//拿到cid  根据cid获取商品的其它信息
	Goods goods = new GoodsBizImpl().getGoodsByCid(gid);
	//数量默认一件
	//总价格    商品的单价 * 数量(1件)

	//将上面获取的信息封装到Cart实体中
	Cart cart = new Cart();
	cart.setGoods(goods);
	cart.setCcount(1);
	cart.setCtotal();

	//1.获取购物车
	List listCarts = (List) session.getAttribute("listCarts");
	//2.判断非空
	boolean flag = true;
	if (null == listCarts) {//说明用户时第一次将商品加入购物车  
		//创建购物车
		listCarts = new ArrayList();
	} else {//否则  购物车中存在商品
			//遍历所有的购物车中的商品  看该购物车中是否存在刚才点击的cart实体封装
		for (Cart c : listCarts) {
			//判断传递的cid与当前listCarts中的每一个cid进行匹配
			if (gid == 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.进行一个购物车布局,实现购物车相关功能

拿到购物车进行一个布局(要求每页显示五个商品,会有删除,修改功能)

定义页码和每页个数,总数量(求出总页数)。

调用伪分页的方法  subList(start,end);
listCarts = listCarts.subList(start, end);

 在尾部有关当前页数的代码,相关超链接需要带有部分逻辑代码和参数

        当前页数(第一页,总页数)

        首页(第一页,模糊查询关键词)

        上一页(当前页数-1并且判断是否符合逻辑,模糊查询关键词)

        下一页(当前页数+1并且判断是否符合逻辑,模糊查询关键词)

        末页(最后一页,模糊查询关键词)

        当点击时跳转到主页面,需要接收参数,进行一个逻辑判断。

<%@page import="com.ys.cart.entity.Cart"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>




Insert title here


	

我的购物车

返回首页
<% //获取购物车 List listCarts = (List) session.getAttribute("listCarts"); //定义一个页码 int pageIndex = 1; //定义一个变量存储每页显示的条数 int pageSize = 5; //当用户点击了下一页 获取到下一页超链接上的参数 String pIndex = request.getParameter("pageIndex"); if (pIndex != null) { pageIndex = Integer.valueOf(pIndex); } //定义一个变量存储总记录数 int pageCount = listCarts.size(); 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) { %> <% } %>
编号 名称 价格 图片 数量 总价格 操作
<%=cart.getGoods().getGid()%> <%=cart.getGoods().getGname()%> <%=cart.getGoods().getGprice()%>

[<%=pageIndex%>/<%=pageMax%>] 首页 上一页 下一页 尾页

删除数据处理

<%@page import="java.util.Iterator"%>
<%@page import="com.ys.cart.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 listCarts = (List) session.getAttribute("listCarts");
	System.out.println(listCarts);

	//迭代器的方式进行删除
	Iterator 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.ys.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 listCarts = (List) 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");
%>


你可能感兴趣的:(java,web,java)