Vue+Springboot 博客项目总结,大厂内部资料

本文详细介绍了使用Vue和SpringBoot构建博客项目的过程,涵盖了从项目环境搭建到异常处理的各个环节。内容包括:子模块和父模块的依赖管理、首页文章列表的日期查询与MybatisPlus的多表查询、最热标签的实现、统一异常处理、最热文章和最新文章的排序、文章归档、登录注册、ThreadLocal保存用户信息、线程池更新阅读次数、评论列表和评论发布等。此外,还讨论了AOP日志、文章图片上传、所有标签和分类列表以及分类和标签文章列表的查询。文章最后分享了作者的学习和工作经验。
摘要由CSDN通过智能技术生成

技术栈 : Vue + Springboot + Mybatis-Plus + Redis + MySQL

1、项目环境的搭建

1.1、子模块和父模块的依赖问题

当父模块使用版本管理进行依赖管理的话,必须声明版本号,如果不这样子模块是无法引入到父模块的依赖的,当然还有一种方法是,直接copy一份父模块的依赖全部到子模块这样的话父模块可以不声明版本号 ;

1.2、声明父工程

必须再父模块的pom文件中声明如下:

pom

2、首页文章列表

2.1、日期关于日期的查询

由于数据库中create_date 为bigint 13位,直接year()不行,需要先转date型后year()。

select year(FROM_UNIXTIME(create_date/1000)) year,month(FROM_UNIXTIME(create_date/1000))

2.2、Mapper接口爆红、

在Mapper文件的上面添加注解即可

@Repository

public interface ArticleMapper extends BaseMapper

{ }

2.3、mybatisplus遇到多表查询怎么办

复杂的sql需要我们自己实现,但是需要注意的是:我们要在resouces下为mapper添加对应的xml时,resources下的包名要与java下mapper文件的一致

3、最热标签

最热标签就是对标签ms_article_tag中的tag_id进行排序数量最多的就是我们的最热标签

1、标签所拥有的文章数量最多就是最热标签 2、查询 根据tag_id分组计数,从大到小排列取前limit个3、然后根据id查出标签

4、统一异常处理

@ControllerAdvice //对加了Controller注解的方法进行拦截处理 AOP的实现!

public class AllExceptionHandler {

//进行异常处理,处理Exception.class

@ExceptionHandler(Exception.class)

@ResponseBody

public Result doException(Exception e){

e.printStackTrace();

return Result.fail(-999,“系统异常”) ; //发生异常返回错误的json

}

}

5、最热文章

先按照是置顶排序 ,然后按照浏览量倒叙排列 order by view_count desc

6、最新文章

先按照是置顶排序 ,然后按照创造时间倒叙排列 order by create_time desc

7、文章归档

SELECT YEAR(FROM_UNIXTIME(create_date/1000)) YEAR,MONTH(FROM_UNIXTIME(create_date/1000)) MONTH,COUNT(*)COUNT FROM ms_article GROUP BY YEAR,MONTH;

GROUP BY YEAR,MONTH;意思是将所有具有相同month字段值和year的记录放到一个分组里。也就是按年月分组,年月都一致算一组

8、登录、用户信息、注销

仅梳理思路

  • Token是服务端端生成的一串字符串,作为客户端进行请求时辨别客户身份的的一个令牌。当用户第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

  • token前端获取到之后,会存储在 storage中 h5 ,本地存储,存储好后,拿到storage中的token去获取用户信息,如果这个接口没实现,他就会一直请求陷入死循环

  • Token的目的是为了验证用户登录情况以及减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。

用户登录

  1. 检查参数是否合法

  2. 根据用户名和密码去user表中查询是否存在

  3. 如果不存在登录失败

  4. 如果存在使jwt生成token返回给前端

  5. 将token放入redis当中 ,设置过期时间

//将token放入redis key: 令牌 value: 用户信息 过期时间:1天

redisTemplate.opsForValue().set(“TOKEN_”+token, JSON.toJSONString(sysUser),1, TimeUnit.DAYS);

  1. 先认证token是否合法,再去redis认证是否存在)

获取当前用户信息

  1. token的合法性验证:是否为空、解析是否成功、redis是否存在

  2. 校验失败返回错误

  3. 校验成功返回结果LoginUserVo<

  • 18
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值