• 吴裕雄--天生自然--SPRING BOOT--电子商务平台的设计与实现(Thymeleaf+MyBatis)--设计部分


    系统功能需求
    
        1.后台管理子系统
        后台管理子系统要求管理员登录成功后,才能对商品进行管理,包括添加商品、查询商品、修改商品以及删除商品。除商品管理外,管理员还需要对商品类型、注册用户以及用户的订单等进行管理。
        2.电子商务子系统
        1)非注册用户
        非注册用户或未登录用户具有的功能如下:浏览首页、查看商品详情以及搜索商品的功能。
        2)用户
        成功登录的用户除具有未登录用户具有的功能外,还具有购买商品、查看购物车、收藏商品、查看订单、查看收藏以及查看用户个人信息的功能。
    系统模块划分

     

    数据库设计

    系统管理
    添加相关依赖
    
        新建一个基于Thymeleaf的Spring Boot Web应用eBusiness,在eBusiness应用中开发本系统。除了STS快速创建基于Thymeleaf的Spring Boot Web应用自带的spring-boot-starter-thymeleaf和spring-boot-starter-web依赖外,还需要向eBusiness应用的pom.xml文件中添加上传文件依赖commons-fileupload、MyBatis与Spring整合依赖mybatis-spring-boot-starter以及MySQL连接器依赖。
    HTML页面及静态资源管理
    
        系统由后台管理和电子商务两个子系统组成,为了方便管理,两个子系统的HTML页面分开存放。在src/main/resources/templates/admin目录下存放与后台管理子系统相关的HTML页面;在src/main/resources/templates/user目录下存放与电子商务子系统相关的HTML页面;在src/main/resources/static目录下存放与整个系统相关的BootStrap及jQuery。
    1.后台管理子系统
    
    管理员在浏览器的地址栏中输入http://localhost:8080/eBusiness/admin/toLogin访问登录页面,登录成功后,进入后台查询商品页面(selectGoods.html)
    
    2.电子商务子系统
    
    注册用户或游客在浏览器的地址栏中输入http://localhost:8080/eBusiness可以访问电子商务子系统的首页(index.html)
    配置文件
    
    server.servlet.context-path=/eBusiness
    #数据库地址
    spring.datasource.url=jdbc:mysql://localhost:3306/shop?characterEncoding=utf8
    #数据库用户名
    spring.datasource.username=root
    #数据库密码
    spring.datasource.password=root
    #数据库驱动
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    #设置包别名(在Mapper映射文件中直接使用实体类名)
    mybatis.type-aliases-package=com.ch.ebusiness.entity
    #告诉系统在哪里去找mapper.xml文件(映射文件)
    mybatis.mapperLocations=classpath:mappers/*.xml
    #在控制台输出SQL语句日志
    logging.level.com.ch.ebusiness.repository=debug
    #关闭Thymeleaf模板引擎缓存(使页面热部署),默认是开启的
    spring.thymeleaf.cache=false
    #上传文件时,默认单个上传文件大小是1MB,max-file-size设置单个上传文件大小
    spring.servlet.multipart.max-file-size=50MB
    #默认总文件大小是10MB,max-request-size设置总上传文件大小
    spring.servlet.multipart.max-request-size=500MB
    组件设计
    
    管理员登录权限验证
    
        从系统分析得知,管理员成功登录后,才能管理商品、商品类型、用户、订单等功能模块。因此,本系统需要对这些功能模块的操作进行管理员登录权限控制。在com.ch.ebusiness.controller.admin包中创建AdminBaseController控制器类,该类中有一个@ModelAttribute注解的方法isLogin。isLogin方法的功能是判断管理员是否已成功登录。需要进行管理员登录权限控制的控制器类继承AdminBaseController类即可,因为带有@ModelAttribute注解的方法首先被控制器执行。
    前台用户登录权限验证
    
        从系统分析得知,用户成功登录后,才能购买商品、收藏商品、查看购物车、我的订单以及个人信息。与管理员登录权限验证同理,在com.ch.ebusiness.controller.before包中创建BeforeBaseController控制器类,该类中有一个@ModelAttribute注解的方法isLogin。isLogin方法的功能是判断前台用户是否已成功登录。需要进行前台用户登录权限控制的控制器类继承BeforeBaseController类即可。
    验证码
    
    1.创建产生验证码的控制器类
        在com.ch.ebusiness.controller.before包中,创建产生验证码的控制器类ValidateCodeController
    
    2.使用验证码
        在需要验证码的HTML页面中,调用产生验证码的控制器显示验证码,示例代码片段如下:
    <td>
        <input type="text" class="form-control"
            placeholder="请输入验证码" th:field="*{code}"/>
    </td>
    <td>
        <img th:src="@{/validateCode}" id="mycode">
    </td>
    <td>
        <a href="javascript:refreshCode()">看不清换一张</a>
    </td>
    统一异常处理
    
        系统对未登录异常、数据库操作异常以及程序未知异常进行了统一异常处理。
    
    1.创建未登录自定义异常
    创建未登录自定义异常NoLoginException。
    2.创建统一异常处理类
    使用注解@ControllerAdvice和@ExceptionHandler创建统一异常处理类GlobalExceptionHandleController。使用注解@ControllerAdvice的类是一个增强的Controller类,在增强的控制器类中使用@ExceptionHandler注解的方法对所有控制器类进行统一处理异常。
    @ControllerAdvice
    public class GlobalExceptionHandleController {
        @ExceptionHandler(value=Exception.class)
        public String exceptionHandler(Exception e, Model model) {
            String message = "";
            //数据库异常
            if (e instanceof SQLException) {
                message = "数据库异常";
            } else if (e instanceof NoLoginException) {
                message = "未登录异常";
            } else {//未知异常
                message =  "未知异常";
            }
            model.addAttribute("mymessage",message);
            return "myError";
        }
    }
    工具类
    
      本系统使用的工具类有两个:MD5Util和MyUtil。
    
    后台管理子系统的实现
    
    管理员登录
    类型管理
    添加商品
    查询商品
    修改商品
    删除商品
    查询订单
    用户管理
    安全退出
    前台电子商务子系统的实现
    
    导航栏及首页搜索
    推荐商品及最新商品
    用户注册
    用户登录
    商品详情
    收藏商品
    购物车
    下单
    个人信息
    我的收藏
    我的订单
  • 相关阅读:
    Activity的活动Menu和上下文Menu使用示例
    drawable之scale and rotate代码示例
    密度无关和缩放比例无关定义
    [前端优化]使用Combres合并对js、css文件的请求
    不同版本的SQL Server之间数据导出导入的方法及性能比较
    SqlBulkCopy加了事务真的会变快吗?
    ASP.NET Web Forms 4.5的新特性(二):针对HTML5的更新和Unobtrusive Validation
    MVC3缓存之一:使用页面缓存
    MVC3缓存之三:MVC3中的局部缓存(Partial Page)
    ASP.NET Web Forms 4.5的新特性(三):Model Binding
  • 原文地址:https://www.cnblogs.com/tszr/p/15381189.html
Copyright © 2020-2023  润新知