Springboot+Vue快速搭建个人博客系统

文章目录

  • 前言
  • 一、SpringBoot实现后端
  • 二、Vue.js实现前端
    • 1.Header和Footer实现:
    • 2.Vue其他配置
  • 总结


前言

本篇博客讲解如何使用SpringBoot和Vue如何快速搭建自己个人博客系统,功能比较少,但是作为一个期末小作业应该够了。本篇博客默认你已经有了SpringBoot和Vue的基础啦!后端还是用了MyBatis-Plus 完成数据库增删改查,我会分别从前后端介绍如何实现。同时呢,代码也会上传到GitHub上。

内容 地址
GitHub 链接
项目演示地址 链接

一、SpringBoot实现后端

SpringBoot后端,主要是接收前端发送的请求,完成逻辑处理后,将Json数据返回前端,这样我们的网页就 “动”起来了!!!首先我们来看一下后端项目包的结构。
Springboot+Vue快速搭建个人博客系统_第1张图片
后端主要是一些配置过程相对比较麻烦,对于请求的处理,基本就是对数据库进行访问,然后对数据进行处理。配置包括如下:
在这里插入图片描述

  1. CrosConfig:跨域请求配置,例如后端端口时8888,前端端口是9999,前端请求时,由于端口不同,所以就需要这个配置啦。
  2. MybatisPlusConfig:MybatisPlus 分页配置,数据之大,一个见面放不下的情况,就需要分页了。这也是很多网页中所必须的,例如豆瓣电影Top250:
    Springboot+Vue快速搭建个人博客系统_第2张图片
  3. MyWebAppConfiguration:文件上传配置,主要配置上传文件的保存路径。
  4. ShiroConfig:用户管理框架shiro的配置
    其中我们还会封装一下常用的功能作为工具类去使用,如下图:
    Springboot+Vue快速搭建个人博客系统_第3张图片
  5. CodeGeneratorUtil:根据数据库表自动生成controller层,mapper层,entity层和Service层的代码,这样我们就可以少些一些代码了。
  6. EmailUtil:发送邮件内容到指定邮箱。
  7. GetDateUtil:从网络中获取当前时间,计算未来N天的日期
  8. JwtUtils:生成JwtToken
  9. RandomPwdUtil:产生指定长度的随机字符串
    其余两个Util用处不大,这里就不介绍了。工具类的代码可以去GitHub看看

这个简单的小项目,主要是两个数据表的逻辑,一个是博客表另一个是用户表
首选我们来看用户表的实现:
-用户数据表:

列名 数据类型 是否为空 备注
user_id bigint(20) 主键(自增)
user_name varchar(64) 用户名
user_avatar varchar(255) 用户头像
user_email varchar(64) 用户邮箱
user_ password varchar(64) 用户密码
user_status int(5) 是否被删除
user_created datetime 用户创建日期
last_login datetime 上一次登录时间

接下来我们看一下controller层,mapper层,entity层和Service层的代码:

  • entity层:
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("m_user")

public class User implements Serializable {
   

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    private String username;

    private String avatar;

    private String email;

    private String password;

    private Integer status;
    @JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private LocalDateTime created;
    @JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private LocalDateTime lastLogin;
    @TableField(exist = false)
    private String token;

}

这里需要添加很多注解,包裹主键,属性是否存在于数据表,日期转换为Json格式。

  • controller层:
@RestController
@RequestMapping("/user")
public class UserController {
   

    @Resource
    private UserService userService;
    @PostMapping("/login")
    public CommonResult login(@Validated @RequestBody User user){
   
       return   userService.login(user);
    }

    @PostMapping("/register")
    public CommonResult register(@Validated @RequestBody User user){
   
        return userService.register(user);
    }

    @PostMapping("/resetPwd")
    public CommonResult resetPwd(@Validated @RequestBody User user){
   
        return userService.resetPwd(user);
    }
    @RequiresAuthentication
    @GetMapping("/logout")
    public CommonResult logout(){
   
//        SecurityUtils.getSubject().logout();
        return CommonResult.successResponse(null,"退出成功");
    }
    //更具用户名获取用户详细信息
    @GetMapping("getUserByName/{username}")

    public CommonResult getUserByName(@PathVariable("username") String username){
   
        return userService.getUserByName(username);
    }

}

主要控制前端请求去往哪里,完成制定的任务,真正得逻辑是在Service里面实现

  • Service层接口:
public interface UserService extends IService<User> {
   

    CommonResult login(User user);

    CommonResult register(User user);

    CommonResult resetPwd(User user);

    CommonResult getUserByName(String username);
}

主要是几个接口得声明:

  • ServiceImpl:
    实现主要得逻辑
package com.work.user.service.impl;

import cn.hutool.crypto.SecureUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.work.common.results.CommonResult;
import com.work.user.entity.User;
import com.work.user.mapper.UserMapper;
import com.work.user.service.UserService;
import com.work.utils.EmailUtil;
import com.work.utils.GetDateUtil;
import com.work.utils.JwtUtils;
import com.work.utils.RandomPwdUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.time.LocalDateTime;

/**
 * 

* 服务实现类 *

* * @author jian * @since 2021-05-27 */
@Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { @Resource private JwtUtils jwtUtils; @Autowired private EmailUtil emailUtil;

你可能感兴趣的:(各种小作业,mysql,vue.js,java)