XIAO_YU99 2022-03-30 16:58 采纳率: 100%
浏览 53
已结题

网上购物商城购物车模块能实现加入购物车功能,但是显示购物车却不能显示到商品信息

问题遇到的现象和发生背景:
添加购物车,能成功,但是查看购物车却不能显示购物车中商品的信息

img

 问题相关代码:
购物车实体:

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * 数据库对应的购物车表
 */
public class Cart implements Serializable {

    private static final long serialVersionUID = 1L;

    private int cid;
    private int uid;
    private int pid;
    private Product product;
    private int cnum = 0;  //购车商品数量
    private BigDecimal ccount; //购物车小计

    public Cart() {
    }

    public Product getProduct() {
        return product;
    }

    public void setProduct(Product product) {
        this.product = product;
    }

    public int getPid() {
        return pid;
    }

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

    public int getCid() {
        return cid;
    }

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

    public int getUid() {
        return uid;
    }

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

    public int getCnum() {
        return cnum;
    }

    public void setCnum(int cnum) {
        this.cnum = cnum;
    }

    public BigDecimal getCcount() {

        BigDecimal pprice =product.getPprice();
if(pprice==null){
    return null;
}
        BigDecimal bigDecimal = new BigDecimal(cnum );

        return pprice.multiply(bigDecimal);
    }

    public void setCcount(BigDecimal ccount) {
        this.ccount = ccount;
    }
    @Override
    public String toString() {
        return "Cart{" +
                "cid=" + cid +
                ", uid=" + uid +
                ", cnum=" + cnum +
                ", ccount=" + ccount +
                '}';
    }
}
购物车的实现

@WebServlet("/cart")
public class CartController extends BaseServlet {

public String create(HttpServletRequest request, HttpServletResponse response) throws IllegalAccessException, SQLException, InvocationTargetException {

    //1.判断是否已经登录
    HttpSession session = request.getSession();
    User user = (User) session.getAttribute("loginUser");
    if (user == null) {
        session.setAttribute("msg", "添加购物车必须先登录!");
        return Constants.REDIRECT+"/login.jsp";
    }
    //2.商品的id和用户id
    int uid = user.getUid();
    String pid = request.getParameter("pid");

    CartService cartService = new CartServiceImpl();
    cartService.createCart(uid,pid);

    return Constants.FORWARD+ "/cartSuccess.jsp";
}


public String show(HttpServletRequest request,HttpServletResponse response) throws IllegalAccessException, SQLException, InvocationTargetException {
    //1.判断是否已经登录
    HttpSession session = request.getSession();
    User user = (User) session.getAttribute("loginUser");
    if (user == null) {
        session.setAttribute("msg", "添加购物车必须先登录!");
        return Constants.REDIRECT+"/login.jsp";
    }

    //2.获取参数
    int uid = user.getUid();

    //3.调用业务逻辑进行数据查询

    CartService cartService = new CartServiceImpl();
    List<Cart> list = cartService.findAll(uid);

    request.setAttribute("list", list);

    return Constants.FORWARD + "/cart.jsp";
}
数据库访问实现类:
```public class CartDaoImpl implements CartDao {

    @Override
    public Cart hasCart(int uid, String pid) throws SQLException, InvocationTargetException, IllegalAccessException {

        //cart --> product 连接查询 多表查询
        QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());


        String sql = "select p.p_name as pname,p.p_id as pid,p.t_id as tid," +
                "p.p_time as ptime,p.p_image as pimage,p_state as pstate," +
                "p.p_info as pinfo, p.p_price as pprice,c.c_id as cid,c.u_id as uid,c.c_count as ccount," +
                "c.c_num as cnum from product p join cart c on p.p_id = c.p_id where" +
                " c.u_id = ? and c.p_id = ?;";


        Map<String, Object> query = queryRunner.query(sql, new MapHandler(), uid, pid);

        if (query == null) {
            return null;
        }

        Cart cart = new Cart();
        Product product = new Product();

        BeanUtils.populate(cart,query);
        BeanUtils.populate(product, query);

        cart.setProduct(product);

        return cart;








  运行结果及报错内容:
系统没有提示错误,但是就是无法获取到数据库里面的购物车商品信息

我的解答思路和尝试过的方法:
我检查过关联数据库是否错误,数据库值是否为空都没有问题
我想要达到的结果:
购物车能获取到商品信息

  • 写回答

4条回答 默认 最新

  • CSDN专家-sinJack 2022-03-30 17:04
    关注

    看执行的sql,没有查询到商品记录。debug调试看看问题导致的原因。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月20日
  • 已采纳回答 4月12日
  • 创建了问题 3月30日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装