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

servlet版购物车项目(下)

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

servlet版购物车项目(下)

这次我们来完善上次没完成的功能,前部分的功能可查看以下博客

servlet版购物车项目(上)_筱X的博客-CSDN博客servlet购物车项目(上)https://blog.csdn.net/weixin_67235801/article/details/124499606?spm=1001.2014.3001.5502

目录

一、补充:数据库建表语句

二、修改部分

购物车:car.jsp

过滤器:LoginFilter.java

 三、新增部分

1.实体类

订单:Order.java

2.数据库访问层接口

订单:IOrderDao.java

订单项:IOrderItemDao.java

3.实现数据库访问层接口的类

订单:OrderDaoImpl.java

订单项:OrderItemDaoImpl.java

4.业务逻辑层接口

订单:IOrderBiz.java

订单项:IOrderItemBiz.java

5.实现业务逻辑层接口的类

订单:OrderBizImpl.java

订单项:OrderItemBizImpl.java

6.处理功能

订单结算:CalcServlet.java

 订单的servlet:OrderServlet.java

 订单项的servlet:ItemServlet.java

7.web界面

订单:order.jsp

订单项:item.jsp


一、补充:数据库建表语句
--用户表
create table car_user
(
    id number primary key,
    account  varchar2(30) not null,
    password varchar(32)  not null
);

--商品表
create table car_goods
(
    id number primary key,
    name varchar2(20) not null,
    describe varchar2(100) default '此商品暂时没有介绍藍' not null,
    price number not null
);

--订单表
create table car_order
(
    id number primary key,
    user_id number not null,
    total number not null
);

--订单项表
create table car_order_item
(
    id number primary key,
    order_id number not null,
    goods_id number not null,
    quantity number not null,
    total number not null
);

二、修改部分

购物车:car.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>



    
    
    
    
    
    购物车界面



    
        ${user.account},您好, 这是购物车
    
    
        继续购买
        订单结算
        查看订单
        清空
    
    
            
商品编号 商品名字 商品数量 商品总价 商品操作
${item.goods.id} ${item.goods.name} ${item.quantity} ${item.total} 删除 +1 -1
total: ${total}

过滤器:LoginFilter.java
package com.xyz.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;



@WebFilter("

public class Order {

    private Integer id;
    private Integer userId;
    private Integer total;
    
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public Integer getUserId() {
		return userId;
	}
	public void setUserId(Integer userId) {
		this.userId = userId;
	}
	public Integer getTotal() {
		return total;
	}
	public void setTotal(Integer total) {
		this.total = total;
	}
    
    public Order() {
		// TODO Auto-generated constructor stub
	}
    
	public Order(Integer id, Integer userId, Integer total) {
		super();
		this.id = id;
		this.userId = userId;
		this.total = total;
	}
	
	@Override
	public String toString() {
		return "Order [id=" + id + ", userId=" + userId + ", total=" + total + "]";
	}
    
}

2.数据库访问层接口

订单:IOrderDao.java
package com.xyz.dao;

import com.xyz.pojo.Order;

import java.util.List;



public interface IOrderDao {

    int maxPK();

    int insert(Order order);

    List list(int userId);

}

订单项:IOrderItemDao.java
package com.xyz.dao;

import com.xyz.pojo.OrderItem;

import java.util.List;



public interface IOrderItemDao {

    int maxPK();

    int insert(OrderItem item);

    List list(Integer id);

}

3.实现数据库访问层接口的类

订单:OrderDaoImpl.java
package com.xyz.dao.impl;

import com.xyz.dao.IOrderDao;
import com.xyz.pojo.Goods;
import com.xyz.pojo.Order;
import com.xyz.util.DBHelper;

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



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;
    }
}

订单项:OrderItemDaoImpl.java
package com.xyz.dao.impl;

import com.xyz.dao.IGoodsDao;
import com.xyz.dao.IOrderItemDao;
import com.xyz.pojo.Order;
import com.xyz.pojo.OrderItem;
import com.xyz.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;
    }

}

4.业务逻辑层接口

订单:IOrderBiz.java
package com.xyz.biz;

import com.xyz.pojo.Order;

import java.util.List;



public interface IOrderBiz {

    int maxPK();

    int insert(Order order);

    List list(int userId);

}

订单项:IOrderItemBiz.java
package com.xyz.biz;

import com.xyz.pojo.OrderItem;

import java.util.List;



public interface IOrderItemBiz {

    int maxPK();

    int insert(OrderItem item);

    List list(Integer id);

}

5.实现业务逻辑层接口的类

订单:OrderBizImpl.java
package com.xyz.biz.impl;

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

import java.util.List;



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) {
        return orderDao.list(userId);
    }
}

订单项:OrderItemBizImpl.java
package com.xyz.biz.impl;

import com.xyz.biz.IOrderItemBiz;
import com.xyz.dao.IOrderItemDao;
import com.xyz.dao.impl.OrderItemDaoImpl;
import com.xyz.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);
    }

}

6.处理功能

订单结算:CalcServlet.java
package com.xyz.servlet;

import com.xyz.biz.IOrderBiz;
import com.xyz.biz.IOrderItemBiz;
import com.xyz.biz.impl.OrderBizImpl;
import com.xyz.biz.impl.OrderItemBizImpl;
import com.xyz.pojo.Order;
import com.xyz.pojo.OrderItem;
import com.xyz.pojo.User;
import org.apache.commons.codec.binary.StringUtils;

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 java.io.IOException;
import java.util.List;



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

}

 订单的servlet:OrderServlet.java
package com.xyz.servlet;

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

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 java.io.IOException;
import java.util.List;



@WebServlet("/order.do")
public class OrderServlet extends HttpServlet {

    private IOrderBiz orderBiz=new OrderBizImpl();

    @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 {
    	//获得用户
        User user = (User)req.getSession().getAttribute("user");
        List list = orderBiz.list(user.getId());
        //放到请求作用域中
        req.setAttribute("list",list);
        //返回order.jsp
        req.getRequestDispatcher("order.jsp").forward(req,resp);
    }

}

 订单项的servlet:ItemServlet.java
package com.xyz.servlet;

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

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 java.io.IOException;
import java.util.List;



@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);
        //返回order.jsp
        req.getRequestDispatcher("item.jsp").forward(req,resp);
    }

}

7.web界面

订单:order.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

    




    
    
    
    
    
    我的订单





    
        您好, 这是订单界面
    
    
        继续购买
        返回购物车
    
    
        
订单编号 订单总价 订单操作
${order.id} ${order.total} 查看详情

 

点击查看详情可跳转订单项界面。 

订单项:item.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

    




    
    
    
    
    
    我的订单项




    
        您好, 这是订单项界面
    
    
        继续购买
        返回购物车
    
    
        
订单项编号 订单项商品名称 订单项商品单价 订单项下单数量 订单项下单总价
${item.id} ${item.goods.name} ${item.goods.price} ${item.quantity} ${item.total}

购物车项目到此结束,感谢大家的观看 

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

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

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