栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JavaWeb MVC购物车(2)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaWeb MVC购物车(2)

JavaWeb MVC购物车(1)回顾

JavaWeb MVC 购物车(1)https://blog.csdn.net/weixin_62270300/article/details/124447210?spm=1001.2014.3001.5501

JavaWeb MVC购物车(2)主要完善的功能

一、处理页面样式被拦截的问题

二、订单结算&订单显示

三、订单项的显示


一、处理页面样式被拦截的问题  LoginFilter.java(处理过滤的代码)
package com.zkiing.filter;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sun.net.httpserver.Filter.Chain;

@WebFilter("
@WebServlet("/calc.do")
public class CalcServlet extends HttpServlet{
	
    private IOrderBiz orderBiz=new OrderBizImpl();
    private IOrderItemBiz orderItemBiz=new OrderItemBizImpl();
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}
	@Override
		protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		   List car= (List)req.getSession().getAttribute("car");
	    //获得用户
		   User user=(User)req.getSession().getAttribute("user");
		   //什么是结算?将数据放到订单、订单项
		   if(car.isEmpty()) {
			   resp.sendRedirect("car.jsp");
			   return;
		   }
		   //计算总和
		   int sum=0;
		   for(OrderItem item:car) {
			   sum+=item.getTotal();
		   }
		   //优先结算订单
		   Order order=new Order();
		   order.setId(orderBiz.maxPK());
		   order.setUserId(user.getId());
		   order.setTotal(sum);
		   //将订单放到数据库
		   int i = orderBiz.insert(order);
		   if(i>0) {
			   //如果订单插入成功 则插入订单项
			   for(OrderItem item:car) {
				   //item没有id
				   item.setId(orderItemBiz.maxPK());
				   //订单编号
				   item.setOrderId(order.getId());
				   orderItemBiz.insert(item);
			   }
			   
			   //结算完毕
			   car.clear();
			   //清空价格
			   req.getSession().setAttribute("total",0);
		   }
		   //返回购物车
		   resp.sendRedirect("car.jsp");

	}

}
IOrderDao.java(订单数据访问接口) 
package com.zking.dao;

import java.util.List;

import com.zking.pojo.Order;

public interface IOrderDao {

	int maxPK();
	
	int insert(Order order);
	
	List list(int userId);
}
OrderDaoImpl .java(订单数据访问接口实现类)
package com.zking.dao.impl;

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

import com.zking.dao.IOrderDao;
import com.zking.pojo.Order;
import com.zking.util.DBHelper;

public class OrderDaoImpl implements IOrderDao{

	//定义资源
    private Connection con;
    private PreparedStatement ps;
    private ResultSet rs;
    
    
	@Override
	public int maxPK() {
		try {
			con=DBHelper.getCon();
			ps=con.prepareStatement("select nvl(max(id),0)+1 from car_order");
		    rs=ps.executeQuery();
		    if(rs.next()) {
		    	return rs.getInt(1);
		    }
		} catch (Exception e) {
			e.printStackTrace();
      }finally {
			DBHelper.close(con, ps, rs);
		}
		return 0;
	}

	
	@Override
	public int insert(Order order) {
		try {
			con=DBHelper.getCon();
			ps=con.prepareStatement("insert into car_order values(?,?,?)");
			ps.setInt(1,order.getId());
            ps.setInt(2,order.getUserId());
            ps.setInt(3,order.getTotal());
            return ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.close(con, ps, rs);
		}
		return 0;
	}
	 @Override
	    public List list(int userId) {
	        List list = new ArrayList<>();
	        try {
	            con = DBHelper.getCon();
	            ps = con.prepareStatement("select * from car_order where user_id=?");
	            ps.setInt(1,userId);
	            rs=ps.executeQuery();
	            while(rs.next()){
	                Order order=new Order();
	                order.setId(rs.getInt(1));
	                order.setUserId(rs.getInt(2));
	                order.setTotal(rs.getInt(3));
	                list.add(order);
	            }
	        } catch (Exception e) {
	            e.printStackTrace();
	        } finally {
	            DBHelper.close(con, ps, rs);
	        }
	        return list;
	    }
}
IOrderBiz.java(订单逻辑接口) 
package com.zking.biz;

import java.util.List;

import com.zking.pojo.Order;

public interface IOrderBiz {
	int maxPK();
	
	int insert(Order order);
	
	List list(int userId);
}
OrderBizImpl.java(订单逻辑接口实现类)
package com.zking.biz.impl;

import java.util.List;

import com.zking.biz.IOrderBiz;
import com.zking.dao.IOrderDao;
import com.zking.dao.impl.OrderDaoImpl;
import com.zking.pojo.Order;

public class OrderBizImpl implements IOrderBiz{
	
	private IOrderDao orderDao=new OrderDaoImpl();

	@Override
	public int maxPK() {
	
		return orderDao.maxPK();
	}

	@Override
	public int insert(Order order) {
		return orderDao.insert(order);
	}

	@Override
	public List list(int userId) {
		// TODO Auto-generated method stub
		return orderDao.list(userId);
	}
   
	
	
}

三、订单项的显示

实现效果如下

点击订单页面的查看详情  就会出现如下订单项界面 可以查看用户的订单

item.jsp(订单查看详情的页面)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

    




    
    
    
    
    
    我的订单项




    
        ${user.account }您好, 这是订单项界面
    
    
        继续购买
        返回购物车
    
    
        
订单项编号 订单项商品名称 订单项商品单价 订单项下单数量 订单项下单总价
${item.id} ${item.goods.name} ${item.goods.price} ${item.quantity} ${item.total}
 ItemServlet.java(处理订单项的页面)
package com.zking.servlet;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.zking.biz.IOrderBiz;
import com.zking.biz.IOrderItemBiz;
import com.zking.biz.impl.OrderBizImpl;
import com.zking.biz.impl.OrderItemBizImpl;
import com.zking.pojo.Order;
import com.zking.pojo.OrderItem;
import com.zking.pojo.User;

@WebServlet("/item.do")

public class ItemServlet extends HttpServlet {

	private IOrderItemBiz orderItemBiz=new OrderItemBizImpl();
	   
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}
	@Override
		protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	    //获得订单id
          Integer id = Integer.parseInt(req.getParameter("id"));
		 //根据订单id查询对应的订单项
          List list = orderItemBiz.list(id);
		  //放到请求作用域中
		  req.setAttribute("list", list);
		   //返回购物车
		   req.getRequestDispatcher("item.jsp").forward(req, resp);

	}
}
OrderItem .java( 订单项的实体类)
package com.zking.pojo;


public class OrderItem {
	    private Integer id;
	    private Integer orderId;
	    private Goods goods;
	    private Integer quantity;
	    private Integer total;
		public Integer getId() {
			return id;
		}
		public void setId(Integer id) {
			this.id = id;
		}
		public Integer getOrderId() {
			return orderId;
		}
		public void setOrderId(Integer orderId) {
			this.orderId = orderId;
		}
		public Goods getGoods() {
			return goods;
		}
		public void setGoods(Goods goods) {
			this.goods = goods;
		}
		public Integer getQuantity() {
			return quantity;
		}
		public void setQuantity(Integer quantity) {
			this.quantity = quantity;
		}
		public Integer getTotal() {
			return total;
		}
		public void setTotal(Integer total) {
			this.total = total;
		}
		public OrderItem(Integer id, Integer orderId, Goods goods, Integer quantity, Integer total) {
			super();
			this.id = id;
			this.orderId = orderId;
			this.goods = goods;
			this.quantity = quantity;
			this.total = total;
		}
		public OrderItem() {
			super();
		}
		@Override
		public String toString() {
			return "OrderItem [id=" + id + ", orderId=" + orderId + ", goods=" + goods + ", quantity=" + quantity
					+ ", total=" + total + "]";
		}
	    
	    

}
 IOrderItemBiz .java(订单项的逻辑接口)
package com.zking.biz;

import com.zking.pojo.OrderItem;

import java.util.List;


public interface IOrderItemBiz {

    int maxPK();

    int insert(OrderItem item);

    List list(Integer id);

}
 OrderItemBizImpl.java(订单项逻辑接口实现类)
package com.zking.biz.impl;

import com.zking.biz.IOrderItemBiz;
import com.zking.dao.IOrderItemDao;
import com.zking.dao.impl.OrderItemDaoImpl;
import com.zking.pojo.OrderItem;

import java.util.List;

public class OrderItemBizImpl implements IOrderItemBiz {

    private IOrderItemDao orderItemDao=new OrderItemDaoImpl();

    @Override
    public int maxPK() {
        return orderItemDao.maxPK();
    }

    @Override
    public int insert(OrderItem item) {
        return orderItemDao.insert(item);
    }

    @Override
    public List list(Integer id) {
        return orderItemDao.list(id);
    }

}
 IOrderItemDao.java(订单项数据访问接口)
package com.zking.dao;

import com.zking.pojo.OrderItem;

import java.util.List;

public interface IOrderItemDao {

    int maxPK();

    int insert(OrderItem item);

    List list(Integer id);

}
 OrderItemDaoImpl.java(订单项数据访问接口实现类)
package com.zking.dao.impl;

import com.zking.dao.IGoodsDao;
import com.zking.dao.IOrderItemDao;
import com.zking.pojo.Order;
import com.zking.pojo.OrderItem;
import com.zking.util.DBHelper;

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

public class OrderItemDaoImpl implements IOrderItemDao {

    private IGoodsDao goodsDao=new GoodsDaoImpl();

    
    private Connection con;
    private PreparedStatement ps;
    private ResultSet rs;

    @Override
    public int maxPK() {
        try {
            con = DBHelper.getCon();
            ps = con.prepareStatement("select nvl(max(id),0)+1 from car_order_item");
            rs = ps.executeQuery();
            if (rs.next()) {
                return rs.getInt(1);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            DBHelper.close(con, ps, rs);
        }
        return 0;
    }

    @Override
    public int insert(OrderItem item) {
        try {
            con = DBHelper.getCon();
            ps = con.prepareStatement("insert into car_order_item values(?,?,?,?,?)");
            ps.setInt(1, item.getId());
            ps.setInt(2, item.getOrderId());
            ps.setInt(3, item.getGoods().getId());
            ps.setInt(4, item.getQuantity());
            ps.setInt(5, item.getTotal());
            return ps.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            DBHelper.close(con, ps, rs);
        }
        return 0;
    }

    @Override
    public List list(Integer orderId) {
        List list = new ArrayList<>();
        try {
            con = DBHelper.getCon();
            ps = con.prepareStatement("select * from car_order_item where order_id=?");
            ps.setInt(1,orderId);
            rs=ps.executeQuery();
            while(rs.next()){
                OrderItem item=new OrderItem();
                item.setId(rs.getInt(1));
                item.setOrderId(rs.getInt(2));
                item.setGoods(goodsDao.one(rs.getInt(3)));
                item.setQuantity(rs.getInt(4));
                item.setTotal(rs.getInt(5));
                list.add(item);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            DBHelper.close(con, ps, rs);
        }
        return list;
    }

}

今天的分享就要这结束啦!!✌

以上就是关于JavaWeb MVC购物车(2)的一些内容!!

期待下次再见!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/840888.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号