你不得不知道的webapp项目(skshop)之加入购物车(2)


一、代码实现

购物车类(Cart.java)

  • 购物车类中存储购物车id、用户id、产品id以及产品数量(由于多值传参略为麻烦,这里我们暂时将产品数量写死,后期会通过前台页面弹出文本框进行赋值)
package com.lazy.domain;

public class Cart {
    private int cid;
    private Users uid;
    private Product pid;
    private  int pnum;

    public Cart() {
    }

    public Cart(Users uid, Product pid, int pnum) {
        this.uid = uid;
        this.pid = pid;
        this.pnum = pnum;
    }

    public Cart(int cid, Users uid, Product pid, int pnum) {
        this.cid = cid;
        this.uid = uid;
        this.pid = pid;
        this.pnum = pnum;
    }

    public int getCid() {
        return cid;
    }

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

    public Users getUid() {
        return uid;
    }

    public void setUid(Users uid) {
        this.uid = uid;
    }

    public Product getPid() {
        return pid;
    }

    public void setPid(Product pid) {
        this.pid = pid;
    }

    public int getPnum() {
        return pnum;
    }

    public void setPnum(int pnum) {
        this.pnum = pnum;
    }
}

购物车业务逻辑(CartService)

  • 购物车业务逻辑写了两个方法,分别用来实现添加购物车(存入数据库)以及显示购物车信息(取出数据库)
  • 1、添加购物车(addCart),通过insert语句,将用户id、产品id以及产品数量插入到购物车数据库表
  • 2、显示数据库中的购物车信息(getMyCart),查询出符合当前登录用户id的所有购物车信息以及需要的产品信息,将其加入到list对象中,最后成功将其返回
package com.lazy.service;

import com.lazy.domain.Cart;
import com.lazy.domain.Product;
import com.lazy.domain.Users;
import com.lazy.tools.DBHelper;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class CartService {
    private String sql ="";
    public boolean addCart(Cart parCart){
        sql = "insert into carts(uid,pid,pnum)values(" +
                parCart.getUid().getUid() +
                ","+ parCart.getPid().getPid() +
                ","+ parCart.getPnum() +")";
        int flag = DBHelper.executeUpdata(sql);
        if (flag <= 0 ){
            return false;
        }
        return true;
    }
    public List<Cart> getMyCart(Users users){
        sql = "SELECT c.cid,c.pid,p.pname,p.pprice,c.pnum " +
                "FROM carts c INNER JOIN products p on c.pid=p.pid " +
                "WHERE c.uid = " + users.getUid();
        List<Map<String,Object>> data = DBHelper.query(sql);
        List<Cart> carts = new ArrayList<>();
        // 获取所有的购物车
        for (Map<String,Object> row : data){
            int cid = Integer.parseInt(row.get("cid").toString());
            int pid = Integer.parseInt(row.get("pid").toString());
            float pprice = Float.parseFloat(row.get("pprice").toString());
            String pname = row.get("pname").toString();
            int pnum = Integer.parseInt(row.get("pnum").toString());
            Product product = new Product(pid,pname,pprice);
            Cart myCart = new Cart(cid,users,product,pnum);
            carts.add(myCart);
        }
        return carts;
    }
}

加入购物车(AddCartAction)

  • 1、获取product.jsp页面中传来的pid
  • 2、调用产品业务逻辑,返回符合条件的产品对象
  • 3、获取登录的用户session
  • 4、创建cart对象,调用购物车业务逻辑,进行添加购物车操作
  • 5、为了符合mvc三层架构的设计,重定向至显示购物信息的Servlet
package com.lazy.servlet;

import com.lazy.domain.Cart;
import com.lazy.domain.Product;
import com.lazy.domain.Users;
import com.lazy.service.CartService;
import com.lazy.service.ProductService;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

public class AddCartAction extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String pid = request.getParameter("pid");
        //产品
        ProductService ps = new ProductService();
        Product product = ps.findByProductId(pid);
        HttpSession session = request.getSession();
        Users myUser = (Users)session.getAttribute("user");
        //购物车
        Cart myCart = new Cart(myUser,product,1);
        CartService cartService = new CartService();
        cartService.addCart(myCart);
        response.sendRedirect("/myCart.do");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }
}

显示当前用户的购物车信息(MyCartAction)

  • 1、获取当前用户的session
  • 2、调用购物车业务逻辑,获取当前用户的所有购物车信息
  • 3、将返回的carts对象写入session,重定向至购物车显示页面(mycart.jsp)
package com.lazy.servlet;

import com.lazy.domain.Cart;
import com.lazy.domain.Users;
import com.lazy.service.CartService;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.List;

public class MyCartAction extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession();
        Users myUser = (Users)session.getAttribute("user");
        //调用业务逻辑
        CartService cs = new CartService();
        List<Cart> carts = cs.getMyCart(myUser);
        //共享对象
        session.setAttribute("mycarts",carts);
        //重定向
        response.sendRedirect("mycart.jsp");

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }
}

显示购物车信息页面(mycart.jsp)

  • 获取session,将其遍历输出
<%@ page import="com.lazy.domain.Cart" %>
<%@ page import="java.util.List" %>
<%--
  Created by IntelliJ IDEA.
  User: lazytom
  Date: 2020/9/23
  Time: 14:40
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <table border="1">
        <tr>
            <td>产品名称</td>
            <td>产品单价</td>
            <td>产品数量</td>
            <td>小计</td>
        </tr>
        <%
            List<Cart> carts = (List<Cart>) session.getAttribute("mycarts");
            for (Cart c: carts) {
        %>
        <tr>
            <td><%= c.getPid().getPname()%></td>
            <td><%= c.getPid().getPprice()%></td>
            <td><%= c.getPnum()%></td>
            <td><%= c.getPid().getPprice()*c.getPnum()%></td>
        </tr>
        <%
            }
        %>
    </table>
</body>
</html>

二、实现效果图

实现效果图

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TomLazy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值