当前位置: 首页 > news >正文

言思集交流社区(SpringBoot)

文章目录

  • 一、公共代码
    • 1.1 使用MyBatis Generator帮我们生成类和映射文件
    • 1.2 定义状态码
    • 1.3 定义统一数据返回
    • 1.4 异常处理
      • 遇到自定义异常
      • 统一异常
    • 1.5 集成API自动生成
    • 1.6 编写工具类
      • 编写MD5加密工具类
      • 编写UUID工具类
      • 编写String工具类
  • 二、业务功能实现
    • 2.1 实现注册功能
    • 2.2 实现登录功能
    • 2.3 获取用户信息
    • 2.4 退出登录
    • 2.5 登录拦截器
    • 2.6 导航栏
    • 2.7 发布帖子
    • 2.8 帖子列表
      • 首页帖子
      • 板块帖子列表
    • 2.9 显示板块信息
    • 2.10 显示帖子详情
    • 2.11 编辑帖子
    • 2.12 点赞操作
    • 2.13 删除帖子
    • 2.14 回复帖子
    • 2.15 回复列表
    • 2.16 获取用户详情
    • 2.17 用户帖子列表
    • 2.18 修改基本的个人信息
    • 2.19 修改密码
    • 2.20 发送站内信
    • 2.21 站内信未读数
    • 2.22 展示所有的未读信
    • 2.23 把未读信标记为已读
    • 2.24 回复站内信
  • 三、发布部署

一、公共代码

1.1 使用MyBatis Generator帮我们生成类和映射文件

  1. 关于Mybatis Generator:和我们的项目没什么关系,只是作为一个插件被集成了进来
  2. 配置pom.xml
    在这里插入图片描述
  3. 配置generatorConfig.xml
    在这里插入图片描述
    在这里插入图片描述
  4. 使用生成器去生成代码
    在这里插入图片描述
  5. 修改生成的代码
    在这里插入图片描述
  6. 关于MyBatisX
    在这里插入图片描述

1.2 定义状态码

  1. 关于状态码:根据需求分析阶段可以预见的成功和失败状态做针对性描述,后续如果出现新的,可以再定义
    • 实现方式:因为状态码是不变且全局的,故可以用变量或枚举定义
      在这里插入图片描述

1.3 定义统一数据返回

  1. 关于统一返回结果:此处我们统一返回JSON格式的字符串
    在这里插入图片描述

1.4 异常处理

遇到自定义异常

在这里插入图片描述

统一异常

在这里插入图片描述

1.5 集成API自动生成

  1. 场景:我们要测试的接口很多,如果每个都用postman输入太麻烦了,此时我们可以借助Swagger帮我们自动生成测试的接口
  2. 关于Swagger:是一套API定义的规范,按照该规范去定义接口及接口相关信息,再借助可以解析这套规则的工具,就可以生成各种格式的接口文档以及在线接口调试页面
    • Springfox:Spring这么实现了Swagger规范,可以帮我们生成文档,是个第三方框架
  3. 如何生成
    • 修改pom.xml
      在这里插入图片描述
    • 编写配置类
      在这里插入图片描述
    • 配置application.yml:处理兼容性问题
      在这里插入图片描述
    • 使用API注解描述
    • 注意点
      在这里插入图片描述
  4. 如何使用生成的API列表:通过http://127.0.0.1:8080/swagger-ui/index.html这个固定的地址直接去访问
    在这里插入图片描述
  5. 如何把生成的API列表导入到postman里
    在这里插入图片描述

1.6 编写工具类

  1. 关于工具类:主要是对我们业务中常用的方法进行一个封装,比如对于字符串进行非空校验,随机生成一个字符串之类的

编写MD5加密工具类

  1. MD5加密工具类:用户登录和注册都会对用户密码进行加密
    • pom.xml:项目中使用commons-codec,它是Apache提供的用于摘要计算、编码解码的工具包,常见的编码解码工具为Base64、MD5、Hex、SHA1、DES等
      在这里插入图片描述
  2. 编写方法
    在这里插入图片描述

编写UUID工具类

在这里插入图片描述

编写String工具类

在这里插入图片描述

二、业务功能实现

2.1 实现注册功能

  1. 后端代码编写
    • 后端代码编写流程
      • 从前往后:从Controller层开始,调用相关方法时如果没有就再去创建
      • 从后往前:把需要的类和方法都提前写好,后续 Controller层 直接调用
        • 工程中推荐这种方法,写完后,Service层 和 Controller层 都需要单元测试
    • 代码
      在这里插入图片描述

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

2.2 实现登录功能

  1. 操作步骤

    在这里插入图片描述

2.3 获取用户信息

  1. 效果
    • 效果1:登录后能显示当前用户的信息
    • 效果2:点击用户头像后,会来到对应用户的详情页
  2. 实现方式:用户提交请求,服务器根据是否有传入id决定返回哪个用户的详情
    • 如果没传,返回当前登录用户详情,可从Session中获取
    • 如果传了,返回指定id的用户详情,可从数据库中查询
  3. 代码
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.4 退出登录

  1. 实现逻辑:用户发送请求,服务器接收把存储的Session销毁 + 解绑保存在Session里的信息,如果成功就跳转到相应界面
  2. 代码
    在这里插入图片描述

2.5 登录拦截器

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

2.6 导航栏

  1. 实现方式
    • 首页是写死的
    • 其他导航栏数据则是从数据库中获得,然后动态拼接到前端上。注意一次能够展示的导航栏是有限的,查询数据库时需要使用 limit来控制
  2. 代码
    在这里插入图片描述
    在这里插入图片描述

2.7 发布帖子

  1. 实现逻辑
    • 用户填入要发布的内容后发送请求,服务器将其写入到文章表中
    • 更新用户发帖数和板块帖子数(更新用户表和板块表)
      • 这些SQL操作要求是原子性的,需要用事务管理起来
  2. 代码
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.8 帖子列表

  1. 效果及实现方式:板块帖子以发布时间降序排列
    • 效果1:首页里显示所有的帖子
    • 效果2:其他板块里切换只显示当前板块的帖子
    • 实现方式:请求中如果不传入 板块id 实现 “效果1”,传入了实现 “效果2”
  2. 代码

首页帖子

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

板块帖子列表

在这里插入图片描述

2.9 显示板块信息

在这里插入图片描述

2.10 显示帖子详情

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

2.11 编辑帖子

在这里插入图片描述

2.12 点赞操作

  1. 实现逻辑:对数据库中的文章表中的likeCount字段+1
  2. 代码
    在这里插入图片描述

2.13 删除帖子

  1. 逻辑
    • 用户点击删除删除,发送请求
    • 服务器校验【用户状态】、【帖子状态】、【当前用户是否为作者】
      • 如果状态有错误,直接返回
      • 如果没有错误,更新该帖子的deleteState + 用户发帖数 + 板块发帖数,然后返回结果
  2. 代码
    在这里插入图片描述

2.14 回复帖子

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

2.15 回复列表

在这里插入图片描述

2.16 获取用户详情

  1. 效果及实现方式
    • 效果1:查看自己(当前登录用户)的信息
    • 效果2:点击其他用户头像可以查看对应的用户详情
    • 实现方式:如果传入用户id,返回指定id的用户详情,没传就返回当前登录用户详情
  2. 代码
    在这里插入图片描述

2.17 用户帖子列表

在这里插入图片描述

2.18 修改基本的个人信息

在这里插入图片描述

2.19 修改密码

在这里插入图片描述

2.20 发送站内信

在这里插入图片描述

2.21 站内信未读数

在这里插入图片描述

2.22 展示所有的未读信

在这里插入图片描述

2.23 把未读信标记为已读

在这里插入图片描述

2.24 回复站内信

  1. 实现逻辑
    • 用户在回复区填写回复内容并提交到服务器
    • 【用户不能回复接受者不是自己的站内信】,需要检验
    • 将站内信状态设置为已回复,并且在消息表中新增回复的数据,这两个修改操作因为在一个业务逻辑中,需要用事务管理起来
  2. 代码
    在这里插入图片描述

三、发布部署

相关文章:

  • Linux中su与sudo命令的区别:权限管理的关键差异解析
  • CMake基础:构建流程详解
  • fast-reid部署
  • Linux 系统、代码与服务器进阶知识深度解析
  • 使用 SAM + YOLO + ResNet 检测工业开关状态:从零到部署
  • CMake检测C编译器标志功能
  • Hash类型
  • html如何在一张图片上的某一个区域做到点击事件
  • Qt Quick Test模块功能及架构
  • OpenLayers 导航之运动轨迹
  • 电磁铁磁极特性分析
  • C++ 结构体深入浅出详解:从基础到进阶的全面指南
  • C++ 信息学奥赛总复习题(第二章)
  • WSL文件如何上传到GitHub
  • 4G物联网模块提升智慧农业的自动化生产效率
  • 深度相机的日常学习
  • Web设计之登录网页源码分享,PHP数据库连接,可一键运行!
  • 2025年- H77-Lc185--45.跳跃游戏II(贪心)--Java版
  • 【MLLM】字节BAGEL多模态理解和生成统一模型
  • 获取 OpenAI API Key
  • 做网站设计的公司排名/百度号码查询平台
  • 营销网站建设/山西太原百度公司
  • 做旅游的网站的要素/最简单的网页制作
  • 如何做网站宣传自己/网页设计模板素材图片
  • 电子商务专业网站设计/韩国热搜榜
  • wordpress 文章格式/谷歌seo是做什么的