Educoder/头歌JAVA——Java Web:基于JSP的网上商城

这篇具有很好参考价值的文章主要介绍了Educoder/头歌JAVA——Java Web:基于JSP的网上商城。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、商品列表

本关任务

具体要求

结果输出

实现代码

二、商品详情

本关任务

JDBC查询方法封装

商品相关信息介绍

具体要求

结果输出

实现代码

三、商品搜索

编程要求

测试说明

实现代码

四、购物车列表

本关任务

JDBC查询方法封装

购物车相关信息介绍

编程要求

测试说明

实现代码

五、购物车操作

本关任务

JDBC查询方法封装

购物车相关信息介绍

编程要求

实现代码

六、下单

本关任务

编程要求

实现代码

七、订单查询

本关任务

编程要求

测试说明

实现代码


一、商品列表

本关任务

一个商场不能缺少商品,本关需要借助JDBC,从 t_goods表中获取销量前四的商品信息,并展示到页面。

JDBC信息;

MYSQL用户名 MYSQL密码 驱动 URL
root 123123 com.mysql.jdbc.Driver jdbc:mysql://127.0.0.1:3306/online_shop?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true

com.educoder.entity.Goods字段及方法;

字段 描述 类型 get方法 set方法
goodsId 商品Id String getGoodsId() setGoodsId(String goodsId)
goodsName 商品名 String getGoodsName() setGoodsName(String goodsName)
goodsImg 展示于主页的图 String getGoodsImg()  setGoodsImg(String goodsImg)
goodsPrice 价格 BigDecimal getGoodsPrice() setGoodsPrice(BigDecimal goodsPrice)
goodsNum 库存数量 Integer getGoodsNum() setGoodsNum(Integer goodsNum)
salesNum 销售数量 Integer getSalesNum() setSalesNum(Integer salesNum)
goodsSize 商品规格 String getGoodsSize() setGoodsSize(String goodsSize)
goodsFrom 商品产地 String getGoodsFrom() setGoodsFrom(String goodsFrom)
goodsTime 保质期 String getGoodsTime() setGoodsTime(String goodsTime)
goodsSaveCondition 存储条件 String getGoodsSaveCondition() setGoodsSaveCondition(String goodsSaveCondition)
goodsDescribe 商品描述介绍 String getGoodsDescribe() setGoodsDescribe(String goodsDescribe)
goodsExplain 对商品简短说明 String getGoodsExplain() setGoodsExplain(String goodsExplain)
goodsClass 所属类别 String getGoodsClass() setGoodsClass(String goodsClass)
goodsDiscount 折扣 BigDecimal getGoodsDiscount() setGoodsDiscount(BigDecimal goodsDiscount)
discountStartTime 优惠起始时间 Date getDiscountStartTime() setDiscountStartTime(Date discountStartTime)
discountEndTime 优惠截止时间 Date getDiscountEndTime() setDiscountEndTime(Date discountEndTime)

表和类对应表;

库名 表名 类名
online_shop t_goods Goods
  1. 注意:类字段和对应的表字段名称一致,这里不再重复列出了。

页面初始效果图:

Educoder/头歌JAVA——Java Web:基于JSP的网上商城

最终页面效果图:

Educoder/头歌JAVA——Java Web:基于JSP的网上商城

具体要求

  • 补全 getGoodsList()方法,返回List<Goods>(商品列表)。

结果输出

[{"goodsClass":"甜品","goodsDescribe":"口感绵密,精致细腻\r\n这份雪白让你有如获至宝的幸福感","goodsExplain":"手工打发而成的进口鲜奶油","goodsFrom":"上海","goodsId":"list1","goodsImg":"list_1-1.jpg","goodsName":"雪域牛乳芝士","goodsNum":996,"goodsPrice":98.00,"goodsSaveCondition":"冷藏0~4摄氏度","goodsSize":"约450g","goodsTime":"3天","salesNum":44},{"goodsClass":"甜品","goodsDescribe":"酸甜清爽\r\n回味无穷","goodsExplain":"卡福洛芒果泥","goodsFrom":"上海","goodsId":"list3","goodsImg":"list_3-1.jpg","goodsName":"芒果熔岩星球蛋糕 Mango Planet","goodsNum":1994,"goodsPrice":118.00,"goodsSaveCondition":"冷藏0~4摄氏度","goodsSize":"约680g","goodsTime":"2天","salesNum":42},{"goodsClass":"甜品","goodsDescribe":"通过精致的工艺\r\n将巧克力的香醇甜蜜发挥到极致\r\n每一口都倍感甜蜜","goodsExplain":"进口的黑巧克力","goodsFrom":"上海","goodsId":"list2","goodsImg":"list_2-1.jpg","goodsName":"哈!蜜瓜蛋糕 Hey Melon","goodsNum":1496,"goodsPrice":99.00,"goodsSaveCondition":"冷藏0~4摄氏度","goodsSize":"约500g","goodsTime":"3天","salesNum":39},{"goodsClass":"甜品","goodsDescribe":"在金色芒果淋面的外衣下\r\n是芒果慕斯的柔情\r\n是芒果啫喱的牵挂\r\n还有丝丝香草戚风蛋糕的香气","goodsExplain":"手工打发而成的进口鲜奶油","goodsFrom":"上海","goodsId":"list5","goodsImg":"list_5-1.jpg","goodsName":"蟹蟹你偷吃 Yum Yum Cake","goodsNum":6999,"goodsPrice":88.00,"goodsSaveCondition":"冷藏0~4摄氏度","goodsSize":"约480g","goodsTime":"3天","salesNum":5}]

实现代码

package com.educoder.service.impl;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    import com.educoder.entity.Goods;
    import com.educoder.service.GoodsService;
    import com.educoder.dao.impl.BaseDao;
    public class GoodsServiceImpl implements GoodsService {
        /**
         * 商品详情接口
         */
        public Goods getGoodsByGoodsId(String goodsId) {
            /********* Begin *********/
             String sql = "select * from t_goods where goodsId = ?";
            List<Object> parameters = new ArrayList<Object>();
            parameters.add(goodsId);
            List<Goods> goodsList = null;
            try {
                goodsList = BaseDao.operQuery(sql, parameters, Goods.class);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return goodsList.size() == 0 ? null : goodsList.get(0);
            /********* End *********/
        }
        /**
         * 商品搜索接口
         */
        public List<Goods> searchGoods(String condition) {
             /********* Begin *********/
            String sql = "select * from t_goods where goodsName like ? or goodsClass like ? order by salesNum desc";
            List<Goods> goodsList = null;
            condition = "%" + condition + "%";
            List<Object> paramenter = new ArrayList<Object>();
            paramenter.add(condition);
            paramenter.add(condition);
            try {
                goodsList = BaseDao.operQuery(sql, paramenter, Goods.class);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return goodsList;
            /********* End *********/
        }
        /**
         * 商品列表接口
         */
        public List<Goods> getGoodsList() {
            /********* Begin *********/
            String USERNAME = "root";
            String PASSWORD = "123123";
            String URL = "jdbc:mysql://127.0.0.1:3306/online_shop?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true";
            Connection conn = null;
            PreparedStatement pste = null;
            ResultSet executeQuery = null;
            List<Goods> list = new ArrayList<Goods>();
            String sql = "select * from t_goods order by salesNum desc limit 4";
            try {
                conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
                pste = conn.prepareStatement(sql);
                executeQuery = pste.executeQuery();
                while (executeQuery.next()) {
                    Goods goods = new Goods();
                    goods.setGoodsId(executeQuery.getString("goodsId"));
                    goods.setGoodsName(executeQuery.getString("goodsName"));
                    goods.setGoodsImg(executeQuery.getString("goodsImg"));
                    goods.setGoodsPrice(executeQuery.getBigDecimal("goodsPrice"));
                    goods.setGoodsNum(executeQuery.getInt("goodsNum"));
                    goods.setSalesNum(executeQuery.getInt("salesNum"));
                    goods.setGoodsSize(executeQuery.getString("goodsSize"));
                    goods.setGoodsFrom(executeQuery.getString("goodsFrom"));
                    goods.setGoodsTime(executeQuery.getString("goodsTime"));
                    goods.setGoodsSaveCondition(executeQuery.getString("goodsSaveCondition"));
                    goods.setGoodsDescribe(executeQuery.getString("goodsDescribe"));
                    goods.setGoodsExplain(executeQuery.getString("goodsExplain"));
                    goods.setGoodsClass(executeQuery.getString("goodsClass"));
                    goods.setGoodsDiscount(executeQuery.getBigDecimal("goodsDiscount"));
                    goods.setDiscountStartTime(executeQuery.getDate("discountStartTime"));
                    goods.setDiscountEndTime(executeQuery.getDate("discountEndTime"));
                    list.add(goods);
                }
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (executeQuery != null)
                        executeQuery.close();
                    if (pste != null)
                        pste.close();
                    if (conn != null)
                        conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            return list;
            /********* End *********/
        }
    }

二、商品详情

本关任务

有了商品还需要看商品的详细信息,本关需要借助JDBC,通过参数商品Id从数据库中获取商品详情,展示到页面。为了完成本关任务,需要了解:

  • JDBC 查询方法封装;
  • 商品相关信息介绍

JDBC查询方法封装

为了方便JDBC操作,平台对JDBC查询方法进行了封装,封装类com.educoder.dao.impl.BaseDao

public static <T> List<T> operQuery(String sql, List<Object> p, Class<T> cls)
            throws Exception {
        Connection conn = null;
        PreparedStatement pste = null;
        ResultSet rs = null;
        List<T> list = new ArrayList<T>();
        conn = getConn();
        try {
            pste = conn.prepareStatement(sql);
            if (p != null) {
                for (int i = 0; i < p.size(); i++) {
                    pste.setObject(i + 1, p.get(i));
                }
            }
            
            rs = pste.executeQuery();
            ResultSetMetaData rsmd = rs.getMetaData();
            while (rs.next()) {
                T entity = cls.newInstance();
                for (int j = 0; j < rsmd.getColumnCount(); j++) {
                    String col_name = rsmd.getColumnName(j + 1);
                    Object value = rs.getObject(col_name);
                    Field field = cls.getDeclaredField(col_name);
                    field.setAccessible(true);
                    field.set(entity, value);
                }
                list.add(entity);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            releaseAll(rs, pste, conn);
        }
        return list;
    }

例如,第一关可以使用如下方法,获取商品列表:

String sql = "select * from t_goods order by salesNum desc limit 4";
        List<Goods> goodsList = null;
        try {
            goodsList = BaseDao.operQuery(sql, null, Goods.class);
        } catch (Exception e) {
            e.printStackTrace();
        }

商品相关信息介绍

MYSQL用户名 MYSQL密码 驱动 URL
root 123123 com.mysql.jdbc.Driver jdbc:mysql://127.0.0.1:3306/online_shop?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true

com.educoder.entity.Goods字段及方法;

字段 描述 类型 get方法 set方法
goodsId 商品Id String getGoodsId() setGoodsId(String goodsId)
goodsName 商品名 String getGoodsName() setGoodsName(String goodsName)
goodsImg 展示于主页的图 String getGoodsImg()  setGoodsImg(String goodsImg)
goodsPrice 价格 BigDecimal getGoodsPrice() setGoodsPrice(BigDecimal goodsPrice)
goodsNum 库存数量 Integer getGoodsNum() setGoodsNum(Integer goodsNum)
salesNum 销售数量 Integer getSalesNum() setSalesNum(Integer salesNum)
goodsSize 商品规格 String getGoodsSize() setGoodsSize(String goodsSize)
goodsFrom 商品产地 String getGoodsFrom() setGoodsFrom(String goodsFrom)
goodsTime 保质期 String getGoodsTime() setGoodsTime(String goodsTime)
goodsSaveCondition 存储条件 String getGoodsSaveCondition() setGoodsSaveCondition(String goodsSaveCondition)
goodsDescribe 商品描述介绍 String getGoodsDescribe() setGoodsDescribe(String goodsDescribe)
goodsExplain 对商品简短说明 String getGoodsExplain() setGoodsExplain(String goodsExplain)
goodsClass 所属类别 String getGoodsClass() setGoodsClass(String goodsClass)
goodsDiscount 折扣 BigDecimal getGoodsDiscount() setGoodsDiscount(BigDecimal goodsDiscount)
discountStartTime 优惠起始时间 Date getDiscountStartTime() setDiscountStartTime(Date discountStartTime)
discountEndTime 优惠截止时间 Date getDiscountEndTime() setDiscountEndTime(Date discountEndTime)

表和类对应表;

库名 表名 类名
online_shop t_goods Goods
  1. 注意:类字段和对应的表字段名称一致,这里不再重复列出了。

页面初始效果图:

Educoder/头歌JAVA——Java Web:基于JSP的网上商城

最终页面效果图:

Educoder/头歌JAVA——Java Web:基于JSP的网上商城

具体要求

  • 补全getGoodsByGoodsId()方法,完成查询商品详情的任务,最后返回Goods(商品)。

结果输出

{"goodsClass":"甜品","goodsDescribe":"口感绵密,精致细腻\r\n这份雪白让你有如获至宝的幸福感","goodsExplain":"手工打发而成的进口鲜奶油","goodsFrom":"上海","goodsId":"list1","goodsImg":"list_1-1.jpg","goodsName":"雪域牛乳芝士","goodsNum":996,"goodsPrice":98.00,"goodsSaveCondition":"冷藏0~4摄氏度","goodsSize":"约450g","goodsTime":"3天","salesNum":44}

实现代码

package com.educoder.service.impl;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    import com.educoder.entity.Goods;
    import com.educoder.service.GoodsService;
    import com.educoder.dao.impl.BaseDao;
    public class GoodsServiceImpl implements GoodsService {
        /**
         * 商品详情接口
         */
        public Goods getGoodsByGoodsId(String goodsId) {
            /********* Begin *********/
             String sql = "select * from t_goods where goodsId = ?";
            List<Object> parameters = new ArrayList<Object>();
            parameters.add(goodsId);
            List<Goods> goodsList = null;
            try {
                goodsList = BaseDao.operQuery(sql, parameters, Goods.class);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return goodsList.size() == 0 ? null : goodsList.get(0);
            /********* End *********/
        }
        /**
         * 商品搜索接口
         */
        public List<Goods> searchGoods(String condition) {
             /********* Begin *********/
            String sql = "select * from t_goods where goodsName like ? or goodsClass like ? order by salesNum desc";
            List<Goods> goodsList = null;
            condition = "%" + condition + "%";
            List<Object> paramenter = new ArrayList<Object>();
            paramenter.add(condition);
            paramenter.add(condition);
            try {
                goodsList = BaseDao.operQuery(sql, paramenter, Goods.class);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return goodsList;
            /********* End *********/
        }
        /**
         * 商品列表接口
         */
        public List<Goods> getGoodsList() {
            /********* Begin *********/
            String USERNAME = "root";
            String PASSWORD = "123123";
            String URL = "jdbc:mysql://127.0.0.1:3306/online_shop?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true";
            Connection conn = null;
            PreparedStatement pste = null;
            ResultSet executeQuery = null;
            List<Goods> list = new ArrayList<Goods>();
            String sql = "select * from t_goods order by salesNum desc limit 4";
            try {
                conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
                pste = conn.prepareStatement(sql);
                executeQuery = pste.executeQuery();
                while (executeQuery.next()) {
                    Goods goods = new Goods();
                    goods.setGoodsId(executeQuery.getString("goodsId"));
                    goods.setGoodsName(executeQuery.getString("goodsName"));
                    goods.setGoodsImg(executeQuery.getString("goodsImg"));
                    goods.setGoodsPrice(executeQuery.getBigDecimal("goodsPrice"));
                    goods.setGoodsNum(executeQuery.getInt("goodsNum"));
                    goods.setSalesNum(executeQuery.getInt("salesNum"));
                    goods.setGoodsSize(executeQuery.getString("goodsSize"));
                    goods.setGoodsFrom(executeQuery.getString("goodsFrom"));
                    goods.setGoodsTime(executeQuery.getString("goodsTime"));
                    goods.setGoodsSaveCondition(executeQuery.getString("goodsSaveCondition"));
                    goods.setGoodsDescribe(executeQuery.getString("goodsDescribe"));
                    goods.setGoodsExplain(executeQuery.getString("goodsExplain"));
                    goods.setGoodsClass(executeQuery.getString("goodsClass"));
                    goods.setGoodsDiscount(executeQuery.getBigDecimal("goodsDiscount"));
                    goods.setDiscountStartTime(executeQuery.getDate("discountStartTime"));
                    goods.setDiscountEndTime(executeQuery.getDate("discountEndTime"));
                    list.add(goods);
                }
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (executeQuery != null)
                        executeQuery.close();
                    if (pste != null)
                        pste.close();
                    if (conn != null)
                        conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            return list;
            /********* End *********/
        }
    }

三、商品搜索

编程要求

请仔细阅读右侧代码,在Begin-End区域内进行代码补充,实现商品搜索的功能,具体需求如下:

  • 补全searchGoods()方法,完成商品搜索的功能,最后返回List<Goods>(商品列表)。

测试说明

平台会对你编写的代码进行测试:

测试输入:雪域牛

预期输出:文章来源地址https://www.toymoban.com/news/detail-429923.html

[{"goodsClass":"甜品","goodsDescribe":"口感绵密,精致细腻\r\n这份雪白让你有如获至宝的幸福感","goodsExplain":"手工打发而成的进口鲜奶油","goodsFrom":"上海","goodsId":"list1","goodsImg":"list_1-1.jpg","goodsName":"雪域牛乳芝士","goodsNum":996,"goodsPrice":98.00,"goodsSaveCondition":"冷藏0~4摄氏度","goodsSize":"约450g","goodsTime":"3天","salesNum":44}]

实现代码

package com.educoder.service.impl;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    import com.educoder.entity.Goods;
    import com.educoder.service.GoodsService;
    import com.educoder.dao.impl.BaseDao;
    public class GoodsServiceImpl implements GoodsService {
        /**
         * 商品详情接口
         */
        public Goods getGoodsByGoodsId(String goodsId) {
            /********* Begin *********/
             String sql = "select * from t_goods where goodsId = ?";
            List<Object> parameters = new ArrayList<Object>();
            parameters.add(goodsId);
            List<Goods> goodsList = null;
            try {
                goodsList = BaseDao.operQuery(sql, parameters, Goods.class);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return goodsList.size() == 0 ? null : goodsList.get(0);
            /********* End *********/
        }
        /**
         * 商品搜索接口
         */
        public List<Goods> searchGoods(String condition) {
             /********* Begin *********/
            String sql = "select * from t_goods where goodsName like ? or goodsClass like ? order by salesNum desc";
            List<Goods> goodsList = null;
            condition = "%" + condition + "%";
            List<Object> paramenter = new ArrayList<Object>();
            paramenter.add(condition);
            paramenter.add(condition);
            try {
                goodsList = BaseDao.operQuery(sql, paramenter, Goods.class);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return goodsList;
            /********* End *********/
        }
        /**
         * 商品列表接口
         */
        public List<Goods> getGoodsList() {
            /********* Begin *********/
            String USERNAME = "root";
            String PASSWORD = "123123";
            String URL = "jdbc:mysql://127.0.0.1:3306/online_shop?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true";
            Connection conn = null;
            PreparedStatement pste = null;
            ResultSet executeQuery = null;
            List<Goods> list = new ArrayList<Goods>();
            String sql = "select * from t_goods order by salesNum desc limit 4";
            try {
                conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
                pste = conn.prepareStatement(sql);
                executeQuery = pste.executeQuery();
                while (executeQuery.next()) {
                    Goods goods = new Goods();
                    goods.setGoodsId(executeQuery.getString("goodsId"));
                    goods.setGoodsName(executeQuery.getString("goodsName"));
                    goods.setGoodsImg(executeQuery.getString("goodsImg"));
                    goods.setGoodsPrice(executeQuery.getBigDecimal("goodsPrice"));
                    goods.setGoodsNum(executeQuery.getInt("goodsNum"));
                    goods.setSalesNum(executeQuery.getInt("salesNum"));
                    goods.setGoodsSize(executeQuery.getString("goodsSize"));
                    goods.setGoodsFrom(executeQuery.getString("goodsFrom"));
                    goods.setGoodsTime(executeQuery.getString("goodsTime"));
                    goods.setGoodsSaveCondition(executeQuery.getString("goodsSaveCondition"));
                    goods.setGoodsDescribe(executeQuery.getString("goodsDescribe"));
                    goods.setGoodsExplain(executeQuery.getString("goodsExplain"));
                    goods.setGoodsClass(executeQuery.getString("goodsClass"));
                    goods.setGoodsDiscount(executeQuery.getBigDecimal("goodsDiscount"));
                    goods.setDiscountStartTime(executeQuery.getDate("discountStartTime"));
                    goods.setDiscountEndTime(executeQuery.getDate("discountEndTime"));
                    list.add(goods);
                }
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (executeQuery != null)
                        executeQuery.close();
                    if (pste != null)
                        pste.close();
                    if (conn != null)
                        conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            return list;
            /********* End *********/
        }
    }

四、购物车列表

本关任务

网上看中的商品,暂时不买,还需要保存起来,这个需要通过购物车来实现。本关需要从session里获取属性名为userUser对象,并借助JDBC,通过表t_cartt_goods获取用户购物车的商品内容,并展示到页面。

为了完成本关任务,需要了解:

  • JDBC查询方法封装;

  • 购物车相关信息介绍。

JDBC查询方法封装

为了方便JDBC操作,平台对JDBC查询方法进行了封装,封装类com.educoder.dao.impl.BaseDao

public static <T> List<T> operQuery(String sql, List<Object> p, Class<T> cls)
            throws Exception {
        Connection conn = null;
        PreparedStatement pste = null;
        ResultSet rs = null;
        List<T> list = new ArrayList<T>();
        conn = getConn();
        try {
            pste = conn.prepareStatement(sql);
            if (p != null) {
                for (int i = 0; i < p.size(); i++) {
                    pste.setObject(i + 1, p.get(i));
                }
            }
            
            rs = pste.executeQuery();
            ResultSetMetaData rsmd = rs.getMetaData();
            while (rs.next()) {
                T entity = cls.newInstance();
                for (int j = 0; j < rsmd.getColumnCount(); j++) {
                    String col_name = rsmd.getColumnName(j + 1);
                    Object value = rs.getObject(col_name);
                    Field field = cls.getDeclaredField(col_name);
                    field.setAccessible(true);
                    field.set(entity, value);
                }
                list.add(entity);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            releaseAll(rs, pste, conn);
        }
        return list;
    }

例如,第一关可以使用如下方法,获取商品列表:

  1. String sql = "select * from t_goods order by salesNum desc limit 4";
  2. List<Goods> goodsList = null;
  3. try {
  4. goodsList = BaseDao.operQuery(sql, null, Goods.class);
  5. } catch (Exception e) {
  6. e.printStackTrace();
  7. }

购物车相关信息介绍

MYSQL用户名 MYSQL密码 驱动 URL
root 123123 com.mysql.jdbc.Driver jdbc:mysql://127.0.0.1:3306/online_shop?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true

com.educoder.entity.Goods字段及方法;

字段 描述 类型 get方法 set方法
goodsId 商品Id String getGoodsId() setGoodsId(String goodsId)
goodsName 商品名 String getGoodsName() setGoodsName(String goodsName)
goodsImg 展示于主页的图 String getGoodsImg()  setGoodsImg(String goodsImg)
goodsPrice 价格 BigDecimal getGoodsPrice() setGoodsPrice(BigDecimal goodsPrice)
goodsNum 库存数量 Integer getGoodsNum() setGoodsNum(Integer goodsNum)
salesNum 销售数量 Integer getSalesNum() setSalesNum(Integer salesNum)
goodsSize 商品规格 String getGoodsSize() setGoodsSize(String goodsSize)
goodsFrom 商品产地 String getGoodsFrom() setGoodsFrom(String goodsFrom)
goodsTime 保质期 String getGoodsTime() setGoodsTime(String goodsTime)
goodsSaveCondition 存储条件 String getGoodsSaveCondition() setGoodsSaveCondition(String goodsSaveCondition)
goodsDescribe 商品描述介绍 String getGoodsDescribe() setGoodsDescribe(String goodsDescribe)
goodsExplain 对商品简短说明 String getGoodsExplain() setGoodsExplain(String goodsExplain)
goodsClass 所属类别 String getGoodsClass() setGoodsClass(String goodsClass)
goodsDiscount 折扣 BigDecimal getGoodsDiscount() setGoodsDiscount(BigDecimal goodsDiscount)
discountStartTime 优惠起始时间 Date getDiscountStartTime() setDiscountStartTime(Date discountStartTime)
discountEndTime 优惠截止时间 Date getDiscountEndTime() setDiscountEndTime(Date discountEndTime)

注意:Cart类冗余信息是通过和t_goods表关联查询出来的,不是存在下面的t_cart表里。

表和类对应表;

库名 表名 类名
online_shop t_cart Cart

注意:类字段和对应的表字段名称一致,这里不再重复列出了。

页面初始效果图:

Educoder/头歌JAVA——Java Web:基于JSP的网上商城

最终页面效果图:

Educoder/头歌JAVA——Java Web:基于JSP的网上商城

编程要求

根据提示,在右侧编辑器补充getGoodsByUserId方法代码,并返回Cart列表。

注意:后续关卡都是需要从request获取用户信息,从而获得userId。在本关卡获取成功后,后续关卡默认已经获取到userId,并当成接口参数传入,不再需要重复获取。

测试说明

平台会对你编写的代码进行测试:

预期输出:

[{"addTime":1543505629000,"buyNum":1,"cartId":101,"goodsClass":"甜品","goodsDescribe":"酸甜清爽\r\n回味无穷","goodsExplain":"卡福洛芒果泥","goodsFrom":"上海","goodsId":"list3","goodsImg":"list_3-1.jpg","goodsName":"芒果熔岩星球蛋糕 Mango Planet","goodsNum":1994,"goodsPrice":118.00,"goodsSaveCondition":"冷藏0~4摄氏度","goodsSize":"约680g","goodsTime":"2天","salesNum":42,"userId":"123456"},{"addTime":1543505631000,"buyNum":1,"cartId":102,"discountEndTime":1499184679000,"discountStartTime":1498923465000,"goodsClass":"甜品","goodsDescribe":"芝士与香草戚风被雪域奶油的浪漫笼罩\r\n每一口都充满快乐的滋味","goodsDiscount":0.75,"goodsExplain":"选用进口白巧克力","goodsFrom":"上海","goodsId":"list6","goodsImg":"list_6-1.jpg","goodsName":"美刀刀蛋糕 Ms. Golden","goodsNum":3000,"goodsPrice":99.00,"goodsSaveCondition":"冷藏0~4摄氏度","goodsSize":"约700g","goodsTime":"3天","salesNum":5,"userId":"123456"}]

实现代码

package com.educoder.service.impl;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    import javax.servlet.http.HttpServletRequest;
    import com.educoder.dao.impl.BaseDao;
    import com.educoder.entity.Cart;
    import com.educoder.entity.User;
    import com.educoder.service.CartService;
    public class CartServiceImpl implements CartService {
        // 查询购物车列表
        public List<Cart> getGoodsByUserId(HttpServletRequest request) {
            /********* Begin *********/
            User user = (User)request.getSession().getAttribute("user");
            String userId = user.getUserId();
            String sql = "select * from t_cart as a, t_goods as b where a.goodsId = b.goodsId and a.userId = ?";
            List<Cart> cartList = null;
            List<Object> parameters = new ArrayList<Object>();
            parameters.add(userId);
            try {
                cartList = BaseDao.operQuery(sql, parameters, Cart.class);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return cartList;
            /********* End *********/
        }
        // 购物车操作接口
        @Override
        public void doCartHandle(String userId, String goodsId, String buyNum, String oper) {
            /********* Begin *********/
            String deletesql = "delete from t_cart where userId=? and goodsId=?";
            String querysql = "select * from t_cart where userId = ? and goodsId = ?";
            String updatesql = "update t_cart set buyNum=? where userId=? and goodsId=?";
            String addsql = "insert into t_cart(userId, goodsId, buyNum, addTime) values(?, ?, ?, ?)";
            List<Object> parameters = new ArrayList<Object>();
            //删除
            if(buyNum == null) {
                parameters.add(userId);
                parameters.add(goodsId);
                BaseDao.operUpdate(deletesql, parameters);
            }
            else{
                //进行修改和添加
                List<Cart> goodsList = null;
                parameters.add(userId);
                parameters.add(goodsId);
                try {
                    goodsList = BaseDao.operQuery(querysql, parameters, Cart.class);
                    parameters.clear();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                //进行添加
                if(goodsList.isEmpty()) {
                    parameters.add(userId);
                    parameters.add(goodsId);
                    parameters.add(buyNum);
                    parameters.add(new Date());
                    BaseDao.operUpdate(addsql, parameters);
                }
                else {
                    //进行修改
                    if(oper != null) {
                        buyNum += goodsList.get(0).getBuyNum();
                        parameters.add(buyNum);
                        parameters.add(userId);
                        parameters.add(goodsId);
                        BaseDao.operUpdate(updatesql, parameters);
                    }
                }
            }
            /********* End *********/
        }
    }

五、购物车操作

本关任务

为了能进行购物车的修改、添加、删除操作,本关需要借助JDBC,对数据库表t_cartt_goods表进行操作。

为了完成本关任务,需要了解:

  • JDBC更新方法封装;

  • 购物车相关信息介绍。

JDBC查询方法封装

为了方便JDBC操作,平台进行的JDBC更新方法进行了封装,封装类com.educoder.dao.impl.BaseDao

public static boolean operUpdate(String sql, List<Object> p) {
        Connection conn = null;
        PreparedStatement pste = null;
        int res = 0;
        conn = getConn();
        try {
            pste = conn.prepareStatement(sql);
            if (p != null) {
                for (int i = 0; i < p.size(); i++) {
                    pste.setObject(i + 1, p.get(i));
                }
            }
            res = pste.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            releaseAll(null, pste, conn);
        }
        return res > 0;//
    }

购物车相关信息介绍

MYSQL用户名 MYSQL密码 驱动 URL
root 123123 com.mysql.jdbc.Driver jdbc:mysql://127.0.0.1:3306/online_shop?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true

com.educoder.entity.Goods字段及方法;

字段 描述 类型 get方法 set方法
goodsId 商品Id String getGoodsId() setGoodsId(String goodsId)
goodsName 商品名 String getGoodsName() setGoodsName(String goodsName)
goodsImg 展示于主页的图 String getGoodsImg()  setGoodsImg(String goodsImg)
goodsPrice 价格 BigDecimal getGoodsPrice() setGoodsPrice(BigDecimal goodsPrice)
goodsNum 库存数量 Integer getGoodsNum() setGoodsNum(Integer goodsNum)
salesNum 销售数量 Integer getSalesNum() setSalesNum(Integer salesNum)
goodsSize 商品规格 String getGoodsSize() setGoodsSize(String goodsSize)
goodsFrom 商品产地 String getGoodsFrom() setGoodsFrom(String goodsFrom)
goodsTime 保质期 String getGoodsTime() setGoodsTime(String goodsTime)
goodsSaveCondition 存储条件 String getGoodsSaveCondition() setGoodsSaveCondition(String goodsSaveCondition)
goodsDescribe 商品描述介绍 String getGoodsDescribe() setGoodsDescribe(String goodsDescribe)
goodsExplain 对商品简短说明 String getGoodsExplain() setGoodsExplain(String goodsExplain)
goodsClass 所属类别 String getGoodsClass() setGoodsClass(String goodsClass)
goodsDiscount 折扣 BigDecimal getGoodsDiscount() setGoodsDiscount(BigDecimal goodsDiscount)
discountStartTime 优惠起始时间 Date getDiscountStartTime() setDiscountStartTime(Date discountStartTime)
discountEndTime 优惠截止时间 Date getDiscountEndTime() setDiscountEndTime(Date discountEndTime)

注意:Cart类冗余信息是需要通过和t_goods表关联查询出来的,不会存在下面的t_cart表里。

表和类对应表;

库名 表名 类名
online_shop t_cart Cart

注意:类字段和对应的表字段名称一致,这里不再重复列出了。

编程要求

根据提示,在右侧编辑器补充doCartHandle方法代码。

接口请求参数说明:

  • userId 用户Id

  • goodsId 商品Id

  • buyNum 添加或修改数量,当为null,表示删除;

  • oper 如果存在,添加buyNum;如果不存在,修改为buyNum

测试输入:123456 list2 1 2

预期输出:插入成功 userId:123456 goodsId:list2 buyNum:1 oper:2

实现代码

package com.educoder.service.impl;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    import javax.servlet.http.HttpServletRequest;
    import com.educoder.dao.impl.BaseDao;
    import com.educoder.entity.Cart;
    import com.educoder.entity.User;
    import com.educoder.service.CartService;
    public class CartServiceImpl implements CartService {
        // 查询购物车列表
        public List<Cart> getGoodsByUserId(HttpServletRequest request) {
            /********* Begin *********/
            User user = (User)request.getSession().getAttribute("user");
            String userId = user.getUserId();
            String sql = "select * from t_cart as a, t_goods as b where a.goodsId = b.goodsId and a.userId = ?";
            List<Cart> cartList = null;
            List<Object> parameters = new ArrayList<Object>();
            parameters.add(userId);
            try {
                cartList = BaseDao.operQuery(sql, parameters, Cart.class);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return cartList;
            /********* End *********/
        }
        // 购物车操作接口
        @Override
        public void doCartHandle(String userId, String goodsId, String buyNum, String oper) {
            /********* Begin *********/
            String deletesql = "delete from t_cart where userId=? and goodsId=?";
            String querysql = "select * from t_cart where userId = ? and goodsId = ?";
            String updatesql = "update t_cart set buyNum=? where userId=? and goodsId=?";
            String addsql = "insert into t_cart(userId, goodsId, buyNum, addTime) values(?, ?, ?, ?)";
            List<Object> parameters = new ArrayList<Object>();
            //删除
            if(buyNum == null) {
                parameters.add(userId);
                parameters.add(goodsId);
                BaseDao.operUpdate(deletesql, parameters);
            }
            else{
                //进行修改和添加
                List<Cart> goodsList = null;
                parameters.add(userId);
                parameters.add(goodsId);
                try {
                    goodsList = BaseDao.operQuery(querysql, parameters, Cart.class);
                    parameters.clear();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                //进行添加
                if(goodsList.isEmpty()) {
                    parameters.add(userId);
                    parameters.add(goodsId);
                    parameters.add(buyNum);
                    parameters.add(new Date());
                    BaseDao.operUpdate(addsql, parameters);
                }
                else {
                    //进行修改
                    if(oper != null) {
                        buyNum += goodsList.get(0).getBuyNum();
                        parameters.add(buyNum);
                        parameters.add(userId);
                        parameters.add(goodsId);
                        BaseDao.operUpdate(updatesql, parameters);
                    }
                }
            }
            /********* End *********/
        }
    }

六、下单

本关任务

上一关已经完成了购物车操作功能开发,现在我们就可以编写下单接口进行购买商品了,本关需要借助JDBC,在t_ordert_order_child表中存储用户订单信息。

下单相关信息介绍;

MYSQL用户名 MYSQL密码 驱动 URL
root 123123 com.mysql.jdbc.Driver jdbc:mysql://127.0.0.1:3306/online_shop?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true

com.educoder.entity.Order字段及方法;

字段 描述 类型 get方法 set方法
orderId 订单编号 String getOrderId() setOrderId(String orderId)
userId 用户Id String getUserId() setUserId(String userId)
orderTime 订单时间 Date getOrderTime() setOrderTime(Date orderTime)
addressId 订单地址 String getAddressId() setAddressId()(String addressId)

com.educoder.entity.Order冗余信息字段及方法;

字段 描述 类型 get方法 set方法
goodsId 商品Id String getGoodsId() setGoodsId(String goodsId)
goodsName 商品名称 String getGoodsName() setGoodsName(String goodsName)
goodsImg 商品图片 String getGoodsImg() setGoodsImg(String goodsImg)
goodsPrice 下单价格 BigDecimal getGoodsPrice() setGoodsPrice(BigDecimal goodsPrice)

注意:Order类冗余信息是需要通过关联查询出来的,不会存在下面的t_order表里。

com.educoder.entity.OrderChildTable字段及方法;

字段 描述 类型 get方法 set方法
id 订单商品主键 Integer getId() setId(Integer id)
orderId 订单Id String getOrderId() setOrderId(String orderId)
goodsId 商品Id String getGoodsId() setGoodsId(String goodsId)
buyNum 购买数量 Integer getBuyNum() setBuyNum()(Integer buyNum)

表和类对应表;

库名 表名 类名
online_shop t_order Order
online_shop t_order_child OrderChildTable

注意:类字段和对应的表字段名称一致,这里不再重复列出了。

编程要求

在右侧编辑器补充submitOrder方法代码,并返回Order类。

接口请求参数说明:

  • userId 用户Id

  • addressId 地址Id

  • goodsBuyNum 数组,购物车选中的商品数量;

  • chooseGoodId 数组,购物车选中的商品Id

逻辑说明:

  1. 下单时orderId需要唯一,可以使用UUID

  2. 表分为t_order订单表和t_order_child订单子表,因为下单商品有可能多个;

  3. 在下单时,需要调用上一关的购物车操作接口,进行购物车数据清空。

测试输入:123456 d01e153c-fc1f-4326-9956-cbf9582a9df7 1,1 list3,list6

预期输出:

清空购物车成功
订单存储信息: userId:123456 addressId:d01e153c-fc1f-4326-9956-cbf9582a9df7
订单商品存储信息:[{"buyNum":1,"goodsId":"list3","id":53},{"buyNum":1,"goodsId":"list6","id":54}]

实现代码

package com.educoder.service.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import com.educoder.dao.impl.BaseDao;
import com.educoder.entity.Order;
import com.educoder.service.OrderService;
public class OrderServiceImpl implements OrderService {
     private CartServiceImpl catService = new CartServiceImpl();
    // 下单
    public Order submitOrder(String userId, String addressId, String[] goodsBuyNum,
            String[] chooseGoodId) {
        /********* Begin *********/
        Order order = new Order();
        String ordersql = "insert into t_order(orderId, userId, orderTime, addressId) values(?, ?, ?, ?)";
        String child_order_sql = "insert into t_order_child (orderId, goodsId, buyNum) values( ?, ?, ?) ";
        String orderId = UUID.randomUUID().toString();
        List<Object> parameters = new ArrayList<Object>();
        parameters.add(orderId);
        parameters.add(userId);
        parameters.add(new Date());
        parameters.add(addressId);
        BaseDao.operUpdate(ordersql, parameters);
        for(int n = 0 ; n < chooseGoodId.length; n++) {
            parameters.clear();
            parameters.add(orderId);
            parameters.add(chooseGoodId[n]);
            parameters.add(goodsBuyNum[n]);
            BaseDao.operUpdate(child_order_sql, parameters);
            //下单后,需要清空购物车
            catService.doCartHandle(userId, chooseGoodId[n], null, null);
        }
        //返回带有订单id的订单
        order.setOrderId(orderId);
        return order;
        /********* End *********/
    }
    // 订单查询
    public List<Order> getOrderByUserId(String userId) {
        /********* Begin *********/
        String sql = "select A.orderId, A.userId, B.userName, A.orderTime, C.address, E.goodsId, E.goodsName, D.buyNum, E.goodsPrice from " +
                "t_order as A, t_user as B, t_address as C, t_order_child as D, t_goods as E " +
                "where A.userId=? and A.orderId=D.orderId and A.userId=B.userId and A.addressId=C.addressId and D.goodsId=E.goodsId " +
                "order by orderTime desc";
        List<Object> parameters = new ArrayList<Object>();
        parameters.add(userId);
        List<Order> orderList = null;
        try {
            orderList = BaseDao.operQuery(sql, parameters, Order.class);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return orderList;
        /********* End *********/
    }
}

七、订单查询

本关任务

上一关已经完成下单接口,本关需要完成查询订单列表,本关需要借助JDBCt_ordert_usert_addresst_order_child表中查询订单信息。

订单查询相关信息介绍;

MYSQL用户名 MYSQL密码 驱动 URL
root 123123 com.mysql.jdbc.Driver jdbc:mysql://127.0.0.1:3306/online_shop?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true

com.educoder.entity.Order字段及方法;

字段 描述 类型 get方法 set方法
orderId 订单编号 String getOrderId() setOrderId(String orderId)
userId 用户Id String getUserId() setUserId(String userId)
orderTime 订单时间 Date getOrderTime() setOrderTime(Date orderTime)
addressId 订单地址 String getAddressId() setAddressId()(String addressId)

com.educoder.entity.Order冗余信息字段及方法;

字段 描述 类型 get方法 set方法
goodsId 商品Id String getGoodsId() setGoodsId(String goodsId)
goodsName 商品名称 String getGoodsName() setGoodsName(String goodsName)
goodsImg 商品图片 String getGoodsImg() setGoodsImg(String goodsImg)
goodsPrice 下单价格 BigDecimal getGoodsPrice setGoodsPrice(BigDecimal goodsPrice)

注意:Order类冗余信息是需要通过关联查询出来的,不会存在下面的t_order表里。

com.educoder.entity.OrderChildTable字段及方法;

字段 描述 类型 get方法 set方法
id 订单商品主键 Integer getId() setId(Integer id)
orderId 订单Id String getOrderId() setOrderId(String orderId)
goodsId 商品Id String getGoodsId() setGoodsId(String goodsId)
buyNum 购买数量 Integer getBuyNum() setBuyNum()(Integer buyNum)

com.educoder.entity.Address字段及方法;

字段 描述 类型 get方法 set方法
addressId 地址Id String getAddressId() setAddressId(String addressId)
userId 用户Id String getUserId() setUserId(String userId)
userName 收货姓名 String getUserName() setUserName(String userName)
userTel 收货电话 String getUserTel() setUserTel()(String addressId)
address 收货地址 String getAddress() setAddress()(String addressId)

表和类对应表;

库名 表名 类名
online_shop t_order Order
online_shop t_order_child OrderChildTable
online_shop t_address Address

注意:类字段和对应的表字段名称一致,这里不再重复列出了。

页面初始效果图:

Educoder/头歌JAVA——Java Web:基于JSP的网上商城

最终页面效果图:

Educoder/头歌JAVA——Java Web:基于JSP的网上商城

编程要求

在右侧编辑器补充getOrderByUserId方法代码,并返回Goods列表。

接口请求参数说明:

  • userId 用户Id

测试说明

测试输入:123456

预期输出:

[{"address":"测试地址","buyNum":1,"goodsId":"list1","goodsName":"雪域牛乳芝士","goodsPrice":98.00,"orderId":"ab25ca41-2230-4af1-81f7-6cfe8872d6b0","orderTime":1543220250000,"userId":"123456","userName":"test"},{“address":"测试地址","buyNum":1,"goodsId":"list2","goodsName":"哈!蜜瓜蛋糕 Hey Melon","goodsPrice":99.00,"orderId":"ab25ca41-2230-4af1-81f7-6cfe8872d6b0","orderTime":1543220250000,"userId":"123456","userName":"test"}]

实现代码

package com.educoder.service.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import com.educoder.dao.impl.BaseDao;
import com.educoder.entity.Order;
import com.educoder.service.OrderService;
public class OrderServiceImpl implements OrderService {
     private CartServiceImpl catService = new CartServiceImpl();
    // 下单
    public Order submitOrder(String userId, String addressId, String[] goodsBuyNum,
            String[] chooseGoodId) {
        /********* Begin *********/
        Order order = new Order();
        String ordersql = "insert into t_order(orderId, userId, orderTime, addressId) values(?, ?, ?, ?)";
        String child_order_sql = "insert into t_order_child (orderId, goodsId, buyNum) values( ?, ?, ?) ";
        String orderId = UUID.randomUUID().toString();
        List<Object> parameters = new ArrayList<Object>();
        parameters.add(orderId);
        parameters.add(userId);
        parameters.add(new Date());
        parameters.add(addressId);
        BaseDao.operUpdate(ordersql, parameters);
        for(int n = 0 ; n < chooseGoodId.length; n++) {
            parameters.clear();
            parameters.add(orderId);
            parameters.add(chooseGoodId[n]);
            parameters.add(goodsBuyNum[n]);
            BaseDao.operUpdate(child_order_sql, parameters);
            //下单后,需要清空购物车
            catService.doCartHandle(userId, chooseGoodId[n], null, null);
        }
        //返回带有订单id的订单
        order.setOrderId(orderId);
        return order;
        /********* End *********/
    }
    // 订单查询
    public List<Order> getOrderByUserId(String userId) {
        /********* Begin *********/
        String sql = "select A.orderId, A.userId, B.userName, A.orderTime, C.address, E.goodsId, E.goodsName, D.buyNum, E.goodsPrice from " +
                "t_order as A, t_user as B, t_address as C, t_order_child as D, t_goods as E " +
                "where A.userId=? and A.orderId=D.orderId and A.userId=B.userId and A.addressId=C.addressId and D.goodsId=E.goodsId " +
                "order by orderTime desc";
        List<Object> parameters = new ArrayList<Object>();
        parameters.add(userId);
        List<Order> orderList = null;
        try {
            orderList = BaseDao.operQuery(sql, parameters, Order.class);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return orderList;
        /********* End *********/
    }
}

到了这里,关于Educoder/头歌JAVA——Java Web:基于JSP的网上商城的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机毕设 - java web网上购物商城系统(源码+论文)

    java web网上购物商城系统 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 本网上商城系统以MVC分层思想为原则,使用SSH框架进行整合开发。页面显示使用JSP和HTML,数据库使用MySQL,这些技术目前相对比较成熟,方便系统的维护与扩展。 网上商城系统由前台管理

    2024年02月03日
    浏览(31)
  • 基于JSP微信小程序网上书店商城系统设计与实现

    【后台管理员功能】 会员列表:查看所有注册会员信息,支持删除 录入资讯:录入资讯标题、内容等信息 管理资讯:查看已录入资讯列表,支持删除和修改 广告设置:上传图片和设置小程序首页轮播图广告地址 留言列表:所有用户留言信息列表,支持删除 图书分类管理:

    2024年02月12日
    浏览(35)
  • 基于JAVA的ssm框架网上手机商城

    博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、爬虫、web开发,已经做了六年的毕业设计程序开发,开发过上千套毕业设计程序,可以定制、也可成品项目,博客中有上百套程序可供参考,欢迎共同交流学习。 🍅文末点击卡片获取联系🍅

    2024年04月17日
    浏览(36)
  • 基于Java篮球系列网上商城系统详细设计和实现

    博主介绍 : ✌ 全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流 ✌ 主要内容: SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、P

    2024年01月17日
    浏览(35)
  • 基于微信小程序网上商城购物系统设计与实现 毕业设计论文大纲参考(JSP后台)

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。 项目配有对应开发文档、

    2024年02月19日
    浏览(41)
  • 【java毕业设计】基于Spring Boot+mysql的网上商城购物系统设计与实现(程序源码)-网上商城购物系统

    大家好,今天给大家介绍基于Spring Boot+mysql的网上商城购物系统设计与实现,本论文只截取部分文章重点,文章末尾附有本毕业设计完整源码及论文的获取方式。更多毕业设计源码可订阅查看上方【毕业设计】专栏获取哦。 随着科学技术的飞速发展,社会的方方面面、各行各

    2024年02月06日
    浏览(89)
  • 基于java(Springboot)网上书城图书购物商城网站系统设计与实现

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年01月24日
    浏览(49)
  • 基于Java的网上商城设计与实现(Springboot框架) 研究背景与意义、国内外研究现状

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年02月03日
    浏览(31)
  • 基于JAVA+Springboot+Thymeleaf前后端分离项目:网上茶叶商城购物系统设计与实现

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。 项目配有对应开发文档、

    2024年02月22日
    浏览(44)
  • 基于Java(SpringBoot框架)毕业设计作品成品(22)网上茶叶商城购物系统设计与实现

    博主介绍: 《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、PPT、论文模版

    2024年02月07日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包