基于Spring+SpringBoot+MyBatis+Thymeleaf的网上购物商城系统

发布于:2022-12-26 ⋅ 阅读:(338) ⋅ 点赞:(0)

目 录

1 绪论 7
1.1 研究背景 7
1.2 主要任务 7
1.3 开发环境 8
1.3.1 IntelliJ IDEA Ultimate 8
1.3.2 MySQL 8
1.4 主要技术 8
1.4.1 Java 8
1.4.2 Spring框架 8
1.4.3 SpringBoot框架 8
1.4.4 MyBatis框架 8
1.4.5 Thymeleaf框架 9
2可行性分析 10
2.1 社会可行性 10
2.2 技术可行性 10
2.3 经济可行性 10
3需求分析 11
3.1 功能需求分析 11
3.1.1 系统功能描述 11
3.1.2 系统用例图 12
3.2 非功能性需求 14
4 概要设计 15
4.1 模块设计 15
4.2 数据库设计 16
4.2.1 系统实体描述 16
4.2.2 数据表设计 19
4.3 系统架构分层 26
5 详细设计 27
5.1 前台详细设计 27
5.1.1 用户注册 27
5.1.2 用户登录 28
5.1.3 商品搜索 30
5.1.4 购物车 31
5.1.5订单 31
5.1.6支付功能 32
5.1.7 个人信息管理 34
5.2后台详细设计 35
5.2.1 后台管理系统主页面销售情况以及商品统计图 35
5.2.2 轮播图管理 36
5.2.3 热销商品管理 37
5.2.4 商品分类管理 38
5.2.5 商品管理 39
5.2.6 会员管理 40
5.2.7 订单管理 40
5.2.8 系统管理 41
5.2.9 管理员登录 42
6 系统测试与运行 44
6.1 系统测试 44
6.1.1 用户登录表单信息反馈功能测试 44
6.1.2 用户注册功能测试 45
6.1.3 添加购物车功能测试 45
6.1.4 订单功能 46
6.1.5 商品搜索功能 46
6.1.6 会员管理禁用用户功能 47
6.1.6 添加商品功能 47
7 总结与展望 48
7.1 总结 48
7.2 展望 48
致 谢 49
参考文献 50
1.3 开发环境
操作系统:Windows10
开发工具集:JDK12
服务器:SpringBoot内嵌Tomcat
开发平台:IntelliJ IDEA Ultimate
数据库:MySQL
1.3.1 IntelliJ IDEA Ultimate
IDEA被定义为 功能强大且符合人体工学的JVM IDE。IntelliJ IDEA的各个方面都旨在最大程度地提高开发人员地生产力。智能编码辅助和人体工程学设计共同使开发不仅富有成效,而且令人愉悦。
1.3.2 MySQL
MySQL是一个开放源码的关系数据库管理系统。MySQL以性能高、成本低、可靠性好等特点广泛应用于Internet上的中小型网站中。
1.4 主要技术
开发语言:Java
开发框架:Spring、SpringBoot、MyBatis、Thymeleaf
1.4.1 Java
Java是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
1.4.2 Spring框架
Spring框架是 Java 平台的一个开源的全栈(Full-stack)应用程序框架和控制反转容器实现,一般被直接称为 Spring。该框架的一些核心功能理论上可用于任何 Java 应用,但 Spring 还为基于Java企业版平台构建的 Web 应用提供了大量的拓展支持。
1.4.3 SpringBoot框架
通过Spring Boot,可以轻松地创建独立的,基于生产级别的基于Spring的应用程序。我们可以以最小的麻烦开始使用。大多数Spring Boot应用程序需要最少的Spring配置。
1.4.4 MyBatis框架
MyBatis是一流的持久性框架,支持自定义SQL,存储过程和高级映射。MyBatis消除了几乎所有的JDBC代码以及参数的手动设置和结果检索。MyBatis可以使用简单的XML或注释进行配置,并将图元,映射接口和Java POJO(普通的旧Java对象)映射到数据库记录。
1.4.5 Thymeleaf框架
Thymeleaf是适用于Web和独立环境的现代服务器端Java模板引擎,Thymeleaf的主要目标是为您的开发工作流程带来优雅自然的模板HTML可以在浏览器中正确显示,并且可以作为静态原型工作,从而可以在开发团队中加强协作。
3需求分析
3.1 功能需求分析
好物优选系统的功能需求,主要有用户登录与注册、用户进行商品搜索、用户浏览商品详细信息、用户搜索商品、用户更改个人信息、用户选购商品、用户进行商品下单等等,系统的主界面提供广告轮播图、商品分类显示、商品推荐、商品排序、以及客户在线咨询、系统信息显示等等。对于后台的功能有商品销售区域统计、商品分类占比统计、商品上线、广告轮播图的配置、热销商品的配置、分类管理配置、会员管理配置、订单管理配置、系统管理配置、系统管理等等。
3.1.1 系统功能描述
根据实际情况,本系统有如下功能:
1)前台主要功能
登录注册:用户直接根据域名可以查看好物优选网站上的商品、浏览商品信息、搜索商品但当设计到收藏、订单等权限操作将自动跳转到系统注册界面。通过注册登录后可以进行一系列网站用户操作。
搜索商品:用户通过所需要商品的关键字来搜索商品,但搜索的关键字不能包含特殊字符例如emoji等表情符号。
购物车管理: 对添加到购物车的商品可以添加购买数量、对购买商品的总价格进行统计、删除购物车中的商品等
商品下单: 完成商品下单的操作之后或者取消订单,后台将呈现该订单信息以及状态,最终由后台管理员确定是否进行商品的出库和发货。
商品付款: 用户跳转到商品付款界面,本文转载自http://www.biyezuopin.vip/onews.asp?id=15242系统将提供各种支付方式支付成功后,后台订单管理将显示商品已经支付待配货。
个人信息的管理:更新个人的名称、签名、收货地址。
我的订单: 将显示个人订单的状态,包括待支付、已支付、配货完成、交易关闭等,也会提供订单的详情连接以提供更加准确的订单信息。
退出: 退出之后将跳转到好物优选系统的登录界面。
2)后台主要功能
管理员登录: 管理员通过管理员账号、密码以及验证码登录后台管理系统。对输入错误的数据进行回显。
添加商品信息:管理员选择商品的分类、填写商品名称、商品简介、商品价格、商品数量、商品标签、商品详情等上架新的商品。
轮播图管理:通过上传图片填写跳转连接来添加新的轮播图,修改轮播图的相关信息,选择指定轮播图进行个别删除或全部删除。
热销商品管理:填写配置项名称、跳转连接、排序值以及所连接的产品号进行新增热销商品也可以对齐进行修改或删除。
新品上线管理:对新上线的商品进行管理和配置。
分类管理:对商品的分类添加各级分类、填写分类的排序值,以及对各种分类进行修改、删除。每个分类都可以设置下级分类,而下级分类同样具有上级分类的功能。
商品管理:管理员进行商品的添加、修改、下架和上架处理。
会员管理:管理员对好物优选系统的用户禁用和解除禁用的操作。
订单管理:显示前台用户的订单状态、修改订单、订单配货以及关闭订单的功能。订单管理界面可以查看每一个订单详细信息和订单所属用户的信息。
管理员个人信息管理:修改个人的登录名称、昵称和密码。
安全退出:退出到管理员登录界面。

package com.itheima.util;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 
import java.io.IOException;
import java.io.Reader;
import java.sql.Connection;

/**
 * @author :Wangzhuang2
 * @date :Created in 2019/03/21 12:20
 * @description:
 * @modified By:
 * @version: 1.0
 * TODO: 编写工具类测试是否获取到连接
 */
public class MyBatisUtil {

    private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();
    private static SqlSessionFactory sqlSessionFactory;

    /**
     *  TODO: 加载位于resources中的mybatis-config.xml配置文件
     *
     * */

    static{

        try{

            Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);

        }catch(IOException e){

            e.printStackTrace();
            throw new RuntimeException(e);

        }
    }

    /**
     * 禁止外界通过new方式创建
     * */

    private MyBatisUtil(){}

    /**
     * 获取SqlSession
     * */

    public static SqlSession getSqlSession(){

        // 从当前线程中获取SqlSession对象
        SqlSession sqlSession = threadLocal.get();
        // 如果SqlSession对象为空
        if (sqlSession == null){
            // 在SqlSessionFactory非空的情况下,获取SqlSession对象
            sqlSession = sqlSessionFactory.openSession();
            // 将SqlSession对象与当前线程绑定在一起
            threadLocal.set(sqlSession);
        }

        // 返回SqlSession对象
        return sqlSession;
    }

    /**
     * 关闭SqlSession与当前线程分开
     * */
    public static void closeSqlSession(){
        // 从当前线程中获取SqlSession对象
        SqlSession sqlSession = threadLocal.get();

        // 如果SqlSession对象非空
        if(sqlSession != null){
            // 关闭SqlSession对象
            sqlSession.close();
            // 分开当前线程与SqlSession对象的关系,目的让GC尽早回收
            threadLocal.remove();
        }

    }

    /**
     *  TESTING
     * */

    public static void main(String [] args){
        Connection connection = MyBatisUtil.getSqlSession().getConnection();
        System.out.println(connection != null?"ConnectionSuccess":"ConnectionFailed");
    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看