购物车之2.0(三层架构)

首先来了解一下,什么是三层架构?

三层架构(开发模式):

                数据访问层:(与数据库连接的java代码)

                业务逻辑层:(调用数据访问层)

                视图层:(调用业务逻辑层)

 2、创建包
            util    
            entity
            dao(放dao接口)
            dao.imp(放dao接口实现类)
            biz
            biz.imp   

今天的2.0版本就是运用三层架构的方法,把昨天的购物车完善

一、建表、包、类

表:

购物车之2.0(三层架构)_第1张图片

 类与包:

购物车之2.0(三层架构)_第2张图片

注意:1.imp_前缀的类中是有方法内容的,但是一般调用其中Biz尾缀的。

           2. Biz尾缀的文件中,如果方法是返回int型,则需要将其改为boolean型

再用三元运算符,判断不同结果的值如:

@Override
		public boolean updateByOid(int oid, int number,Double sumprice) {
			//调用数据访问层的修改方法
			return iot.updateById(oid, number,sumprice)>0?true:false;
		}

二、1.0页面的修改

整个项目是与用户联系的,订单其实是包括再用户中的,调用用户通过用户调用订单购物车

原代码在上章有展示,逻辑思维基本相同,这里展示修改后的代码,如果有需要可以上章看看哈:

index.jsp :商品浏览页面:

注意:实例化对象:引用类型    对象名=new    实际类型(【参数】);

如:                        IGoodsBiz   gd     =new     Imp_IGoodsBiz();




Insert title here







	<%//跳转页面,传递编号
	Object obj=session.getAttribute("u");
	if(obj==null){
			 out.print("");
	}
		 %>
	
		<%
		IGoodsBiz gd=new Imp_IGoodsBiz();
		ArrayList glist=gd.getAll();
		for(Goods g:glist){
		%>
		
		<%} %>
	
商品编号 商品名称 商品单价 商品介绍 商品图片 操作
<%=g.getBid() %> <%=g.getBname() %> <%=g.getBprice() %> <%=g.getBinfo() %>

do_spcar.jsp : 购物车操作页面:

注意:这里获取订单总价时:需要先获取商品单价,传给 setGsumprice()赋值

//获取单价
	Double price=g.getBprice();
	//订单总价
	oi.setGsumprice(price);

再修改订单实体类

public void setGsumprice(Double price) {
		this.gsumprice =price*gnumber;
	}
<%
	//获取用户
	
	Object obj=session.getAttribute("u");
	int uidd;
	if(obj!=null){
	uidd=((User)obj).getUidd();
	}else{
		uidd=0;
	}
	//获取商品订单数量
	String number=request.getParameter("gnumber");
	int count=1;
	if(number!=null){
		count=Integer.valueOf(number);
	}
	
	//接收商品id
	String id=request.getParameter("bid");
	int bid=Integer.valueOf(id);
	//初始化商品dao对象
	IGoodsBiz ib=new Imp_IGoodsBiz();
	//调用商品dao方法根据id查询商品
	Goods g=ib.getById(bid);
	
	//构造订单对象
	Orderitem oi=new Orderitem();
	//初始化商品dao对象
	IOrderItemBiz iob=new Imp_IOrderItemBiz();
	//给订单属性赋值
	//oid订单编号
	oi.setOid(DBHelper.getNextId("Orderitem", "oid"));
	//uidd
	oi.setUidd(uidd);
	//商品id
	oi.setBid(bid);
	//订单中的商品数量
	oi.setGnumber(1);
	
	//获取单价
	Double price=g.getBprice();
	//订单总价
	oi.setGsumprice(price);
	//下单时间
	oi.setOdate(null);
	//下单状态
	String state="false";
	oi.setOstate(state);
	
	
	ArrayList olist=iob.getAll(uidd);
	
	boolean b=true;//默认没有相同订单
	//遍历集合判断是否有相同订单
	for(int i=0;i

sp_car.jsp 购物车页面:

获取订单遍历集合,将订单id传给删除页面:




Insert title here








	<%//跳转页面,传递编号
	Object obj=session.getAttribute("u");
	if(obj==null){
			 out.print("");
	}
		 %>
	
	<%
		//获取用户id
		int uidd=((User)obj).getUidd();
		//获取订单biz
		IOrderItemBiz iob=new Imp_IOrderItemBiz();
		//获取原订单集合;
		ArrayList olist=iob.getAll(uidd);
		
		//订单绑定到页面:
		for(Orderitem oi:olist){
			
			//获取商品编号bid
			int bid=oi.getBid();
			//初始化商品dao对象
			IGoodsBiz ib=new Imp_IGoodsBiz();
			//调用商品dao方法根据id查询商品
			Goods g=ib.getById(bid);
			%>
			
			
		<% }%>
		<%
		int sum=0;
		for(int i=0;i
		
		
商品图片 商品名称 商品单价 商品介绍 商品数量 订单总价 操作
<%=g.getBname() %> <%=g.getBprice() %> <%=g.getBinfo() %> <%=oi.getGsumprice()%>
支付:<%=sum %>

del_car.jsp 删除页面:

<%
	//获取用户
	Object obj=session.getAttribute("u");
	int uidd=((User)obj).getUidd();
	//获取订单编号
	String id=request.getParameter("oid");
	int oid=Integer.valueOf(id);
	//获取订单biz
	IOrderItemBiz iob=new Imp_IOrderItemBiz();
	//删除订单
	iob.deleteById(oid);
			
		

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

最终的效果与之前相同,重点是怎样去区分三层代码并运用接口,

能力源于知识的积累

希望它们能帮助的你们,拜拜啦!

你可能感兴趣的:(购物车2.0(接口),eclipse,java-ee)