电脑商城项目总结

本项目来源于B站视频,项目对于新手非常友好

  • 后端利用SpringBoot+MyBatis+Mysql来实现
  • 前端利用html+css+javascript来实现
  • 前后端并未实现分离,是传统的前后端一体的web项目

B站视频链接

项目资源链接:

1
2
链接:https://pan.baidu.com/s/1M4L1qzjcHCnYvVV00g9VKw 
提取码:1wqc

项目总结

整个项目学习下来,对于个人最大的帮助总结如下

  • 了解了一个项目各个业务开发的具体流程,充分体会了web项目的MVC思想

    • 一个项目代码开发的流程

      • 业务模块整体功能分析
      • 设计并创建数据库
      • 数据库表对应实体类创建
      • 持久层开发
        • 规划需要执行的SQL语句
        • 接口和抽象方法设计
        • SQL映射文件配置(Mybatis mapper.xml文件的编写)
        • 单元测试(每编写一个功能函数,都需要在测试类中进行单元测试,确保功能正常)
      • 业务层开发
        • 规划异常(设计对应的异常基类)
        • 接口和抽象方法(方法名不重要,重要的是方法参数列表的设计,需要前端传递何种参数)
        • 抽象方法实现
        • 单元测试
      • 控制层开发
        • 异常处理(创建控制层基类,基类中做异常处理拦截,统一进行异常处理,@ExceptionHandler)
        • 设计请求
          • request url
          • request method
          • request params
          • response data
        • 处理请求,在控制类中编写对应方法
      • 前端页面
        • 作为后端人员,只需要关注如何发送ajax请求,如何发送表单请求即可
    • 一些重要的开发技巧

      • 业务层规划异常,设计异常基类ServiceException,其他新增异常均继承自该基类

      • 控制层异常处理,设计控制层基类,利用@ExceptionHandler注解,拦截控制层所有异常进行处理

      • 控制层响应数据设计,新建对应数据的类,以JSON形式返回数据,包含响应状态码、响应状态描述符、响应数据,响应数据类型未知,采用注解形式;此格式具体应与前端人员进行协商

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        31
        32
        33
        34
        35
        36
        37
        38
        39
        40
        41
        package com.bang.store.utils;

        import lombok.Data;

        import java.io.Serializable;

        @Data
        public class JsonResult<E> implements Serializable {
        //状态码
        private Integer state;
        //状态描述信息
        private String message;
        //请求返回数据,数据类型位置,泛型
        private E data;

        public JsonResult() {
        }

        public JsonResult(Integer state) {
        this.state = state;
        }
        //捕获异常,异常信息的传递
        public JsonResult(Throwable e){
        this.message=e.getMessage();
        }

        public JsonResult(Integer state,String message){
        this.state = state;
        this.message = message;
        }
        public JsonResult(Integer state, E data) {
        this.state = state;
        this.data = data;
        }

        public JsonResult(Integer state, String message, E data) {
        this.state = state;
        this.message = message;
        this.data = data;
        }
        }
      • 图像上传模块,学会了文件上传前后端之间如何协作,后端存储、前端回显等功能

      • 拦截器的实现,对于一个项目安全性考虑,设计对应拦截器,只有登录之后才能访问其他页面

        • 拦截器如何添加白名单和黑名单