用户购物车,实现添加商品的功能!

一、接口和实现类

package com.aaa.dao;

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

public interface IProductDAO {
    List<Map<String,Object>> getAllProduct();

    /**
     * 获得商品的id
     * @param pid
     * @return
     */
    Map<String ,Object>getProduct(String pid);

    /**
     *     添加购物车
     */
    boolean addCart(String pid,String num,Integer uid);

    /**
     * 判断某个商品 是否已经加到 购物车
     */

    boolean isAddCart(String pid,Integer uid);

    /**
     *    商品数量的更新
     */

    boolean updateCart (String pid,String num, Integer uid);

    /**
     * 删除订单  根据用户id删除
     */
    boolean deleteOrders(Integer uid);

    Map<String, Object> getProduct(int pid);
}
package com.aaa.dao.Impl;

import com.aaa.dao.IProductDAO;
import com.aaa.util.DBUtil;

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

public class ProductDAOImpl implements IProductDAO {
    @Override
    public List<Map<String, Object>> getAllProduct() {
        String sql="select * from product ";
        return DBUtil.executeQuery(sql);
    }

    @Override
    public Map<String, Object> getProduct(String pid) {
        String sql="select * from product where pid=?";
        List<Map<String, Object>> list = DBUtil.executeQuery(sql, pid);
        if (list.size()>0){
            return  list.get(0);
        }else {
            return  null;
        }

    }

    /**
     *  添加购物车的方法
     */
    public boolean addCart(String pid, String num, Integer uid) {
       String sql="insert into car (pid,num,uid) values (?,?,?)";
        return DBUtil.executeUpdate(sql,pid,num,uid);
    }

    /**
     *   判断商品是否 已经添加到购物车
     *   select * from car where pid=? and uid=?
     *   查询在  car 数据表中是否有  商品的名字 和 用户的id
     */

    public boolean isAddCart(String pid, Integer uid) {
        String sql="select * from car where pid=? and uid=?";
        List<Map<String, Object>> list = DBUtil.executeQuery(sql, pid, uid);
        return list.size()>0;
    }

    /**
     * 商品数量的更新
     * @param pid
     * @param num
     * @param uid
     * @return
     */
    public boolean updateCart(String pid, String num, Integer uid) {
        String sql="insert into set num=num+? where uid=? and pid=?";
        return DBUtil.executeUpdate(sql,num,uid,pid);
    }

    @Override
    public boolean deleteOrders(Integer uid) {
        String sql="delete orders where uid=?";
        return  DBUtil.executeUpdate(sql, uid);
    }

    @Override
    public Map<String, Object> getProduct(int parseInt) {

        return null;
    }

}

二、在produc.jsp页面中跳转到   AddCartServlet

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"+"views/";
%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>

<!DOCTYPE HTML >
<html>
  <head>
    <base href="<%=basePath%>">

    <meta charset="UTF-8">
        <title>商品详情</title>
        <link rel="stylesheet" type="text/css" href="css/product.css"/>
        <script type="text/javascript" src="js/product.js">

        </script>

  </head>
  <%--
      when test="${empty map}"语句就是等于 if else语句  判断的作用
      结合otherwise使用 empty  map 判断 是否非空
   --%>
  <body>
       <!-- 头部导航 -->
        <jsp:include page="/views/header.jsp"></jsp:include>
            <c:choose>
                <c:when test="${empty map}">
                    找不到该页面
                </c:when>

                <c:otherwise>
                    <div class="wrap">
                        <img src="${map.pimage}" />
                        <div class="description">

                            <form action="/shop/addCart.do" method="post">
                                <h2>${map.pname}</h2>
                                <div class="old_price">
                                    原价:
                                    <span>¥465</span>
                                </div>
                                <div class="price">
                                    折扣价:
                                    <span>¥465</span>
                                </div>
                                <div>
                                    尺码:均码
                                </div>
                                <input type="text" value="${map.pid}" hidden="hidden" name="pid" id="pid"/>
                                <div class="count">
                                    数量:
                                    <span class="s">-</span>
                                    <input type="text" value="1" name="num" class="num" />
                                    <span class="s">+</span>
                                </div>

                                <div>
                                    <input type="submit" value="加入购物车" class="goods_cart" />
                                </div>
                                <div>
                                    <input type="submit" value="立即购买" class="buy"/>
                                </div>
                            </form>
                        </div>
                    </div>
                </c:otherwise>
            </c:choose>
  <script>
      // 如果error 不等于 空     那就是出现  error  就要提示用户登录
      if ("${error}" != ""){
          if (confirm("对不起,您还没登录,请先登录"));{
              window.location.href="/shop/views/login.jsp";
          }
      }
      // 如果 不等于空  就是有  addSuccess  就是添加成功啊
      if ("${addSuccess}" != ""){
          if (confirm("添加成功,是否去购物车?")){
              // 浏览器发送请求的方式之一
              window.location.href="/shop/myCart.do";
        }
      }
  </script>
    </body>
</html>

三、servlet  业务操作

package com.aaa.servlet;

import com.aaa.dao.IProductDAO;
import com.aaa.dao.Impl.ProductDAOImpl;

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.Map;

/**
 用户购物车添加商品功能的实现?
 *
 * 1.判断用户是否已经登录?
 *      我们是为用户实现购物车 所以判断用户是否登录
 *
 * 登录?
 *
 * 2.获取用户的购物车参数  pid  num
 *      获取用户的id   是Interger 类型 强转走一波
 *
 * 3.继续判断  购物车中是否有这个商品?
     * 有  ,就更新数量?
     * 没有,就重新去添加商品。
 *
 * 4.添加成功后  请求转发到product.jsp 页面 展示给用户
 *
 */
@WebServlet("/addCart.do")
public class AddCartServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Map user = (Map) req.getSession().getAttribute("user");

       if (user == null){
           req.setAttribute("error","请先登录");
       }else {
           String pid = req.getParameter("pid");
           String num = req.getParameter("num");
           Integer uid = (Integer) user.get("uid");

           IProductDAO dao=new ProductDAOImpl();
           boolean addCart = dao.isAddCart(pid,  uid);

           if (addCart){
               dao.updateCart(pid,num,uid);
           }else{
               dao.addCart(pid,num,uid);
           }
           req.setAttribute("addSuccess","添加成功");
       }
       req.getRequestDispatcher("/views/product.jsp").forward(req,resp);
    }
}

原文地址:https://www.cnblogs.com/ZXF6/p/10777188.html

时间: 2024-10-10 12:28:33

用户购物车,实现添加商品的功能!的相关文章

编写一个简易购物车,实现向购物车内添加商品,移除指定商品及清空购物车功能。

showp.jsp <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+reque

简单实现拖动商品,加入购物车并总计商品的功能

<html> <head> <link rel="stylesheet" type="text/css" href="easyui.css"> <link rel="stylesheet" type="text/css" href="icon.css"> <script type="text/javascript"

【SSH网上商城项目实战09】添加和更新商品类别功能的实现

上一节我们做完了查询和删除商品的功能,这一节我们做一下添加和更新商品的功能. 1. 添加商品类别 1.1 添加类别的UI设计 我们先说一下思路:首先当用户点击"添加商品"时,我们应该弹出一个"添加商品"的UI窗口(注意这里不是跳转到新的jsp,EasyUI只有一个页面),弹出这个"添加商品"的窗口后,应该锁住它父类的所有窗口(即点击其他地方无效,只能操作添加商品的窗口),等用户填好了信息后,在新弹出来的窗口上点击"添加"后,将

电商网站中添加商品到购物车功能模块2017.12.8

前言: 电商网站中添加商品到购物车功能模块实现: 根据前一篇博客的介绍,我们看到淘宝网站为了保证购物车数据的同步,直接是强制用户必须登录才可以将商品加入购物车.而京东网站是用户在未登录的状态下也可以将商品加入到购物车,此时这个是保存在了cookie中,然后用户登录后,根据商品的id判断商品是否存在,将两个购物车的商品合并,形成最终的购物车商品. 本篇文章分两个模块,分别看下这两个功能是如何实现的: 1.必须在用户登录的前提下,才可以将商品加入到购物车列表 我们今天先看下淘宝网站的状态下的添加商品

作业二:优化购物车:用户入口:1.将商品的信息存到文件中;2.将已经购买的商品、余额记录存到文件中。商家入口:1.可以添加商品;2.可以修改商品的价格

#Author:AXIN #Date:2017/5/22 12:04 #优化版的购物车 #用户入口: #1.商品的信息存到文件里 #2.已购商品,余额记录 #商家入口: #1.可以添加商品 #2.修改商品价格 product_list = [ ('Iphone',5288), ('Mac pro',12000), ('Bike',800), ('Watch',36000), ('Coffe',39), ('Python book',120), ] #将商品信息打印到console窗口下 def

关于添加商品多规格生成表格的功能实现

最近商品后台需要添加商品多规格的需求,具体是:用户可以自定义规格以及参数,然后再自定义组合规格参数生成商品表单编辑商品信息: 这个功能我做了两次都以失败告终,越做越复杂,在网上看到某位大神的小demo,感觉很好就放出来做参考: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <link rel="stylesheet"

Vue 商城的一些小demo(后台添加商品、前台购物车、本地存储的使用)

demo   商城后台,添加一种商品 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <!-- 引入vue.js --> <script src="js/vue.js"></script> </head> <body> <div id=&

贝塞尔曲线实现的购物车添加商品动画效果

效果图如下: 1.activity_main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rly_bezier_curve_shopping_cart" android:layout_w

estore商城案例(二)------登录&amp;添加商品&amp;商品列表(下)

撸完了登录模块,接着撸商品添加,和商品列表模块: 先亮出数据库: 1 DROP TABLE IF EXISTS products; 2 CREATE TABLE products ( 3 id varchar(100) NOT NULL, 4 name varchar(100) DEFAULT NULL, 5 price double DEFAULT NULL, 6 category varchar(100) DEFAULT NULL, 7 pnum int(11) DEFAULT NULL,