Springboot+vue3的图书管理系统

设计说明

采用Readme文档形式说明来涉及的技术点

环境安装
npm i axios
npm install vue-router@4
npm install element-plus --save

设计要求及说明

数据库: book    编码utf-8
后端端口: 8081
前端端口: 8080
1、登录
    采用token鉴定是否登录、采用在header存放username、password鉴定身份
    至于记住我、单点登录等功能, 可单独再设计, 不用放在这一个模块中(且这部分设计逻辑会复杂一些, 记住我可简单的通过在前端浏览器的localStorage中存储用户信息, 然后每次进入首页都先自动登陆一下, 这样的设计是相对简单的; 另一种是在后端接口去拿cookies, 然后手动去判断用户是否登录, 这样的设计需要再添加一个拦截器, 设计相对复杂些)
    单点登录可以考虑结合Redis集群进行项目搭建, 不同服务间共用缓存信息, 可查到用户的登陆情况, 这个一般用于大型项目

2、权限控制
    采用自定义注解实现

3、分层
    常规的分层, 即controller、entity、mapper、service(由于采用mybatis-plus), 这样的分层也较为清晰

4、日志
    通过拦截器实现日志记录

5、缓存
    使用redis作为缓存, 用于存放token, 及一些图书数据(设置半小时内访问未达到十次则进行清除, 只保存十次及以上访问次数的图书信息, 这样达到记录热点数据的情况, 当经过半小时未被清除, 则重新计数和设置过期时间)

6、数据库
    考虑到结合mybatis-plus一起使用, 所以采用mysql作为数据库(实际MySQL的部署应用也已经非常方便了)

7、配置分离
    参考文章: https://blog.csdn.net/qq_35031260/article/details/103693566
    意思是指: 开发环境和上线环境需要分开, 写两个配置文件再在application.properties文件里面设置一下即可

8、swagger
    接口文档的生成, 由于拦截器的存在, 只在开发时进行文档的查看(需要关闭拦截器才可进行查看), 实际使用并不多, 一般都结合postman或前端界面进行测试

9、RestFul风格的API
    实际上很多使用中并不会完全按照这个风格, 主要是因为这个风格能够描述的接口数量太少, 只有常用的增删改查, 当涉及别的接口时, 会不得不用英文路径名以示区分及描述
    本图书管理系统设计的接口数量较少(后续可再补充):
        (1): /user/login  (post请求)
        (2): /user/register  (post请求)
        (3): /user/logout  (get请求)

        (4): /book  (get请求)
        (5): /book  (post请求)
        (6): /book  (put请求)
        (7): /book  (delete请求)

    其中为了达到演示权限处理的功能, 对 (2) (5)(6)(7) 接口设置了仅能管理员访问, 通过自定义注解及拦截器实现
本项目仅供功能模拟, 实际使用中管理员端会单独再设计一个模块与一套前端页面, 不会与一般用户使用的系统冗余, 这里的权限设计也就没有很实际的用途
一般的权限设计, 在角色较多且菜单较多(即功能较为丰富)时, 会对不同的的角色分配不同的菜单, (可参考网站: 禅道 https://www.chandao.net/), 在这个系统的设计中, 就涉及了较多的角色, 并给它们分配不同的菜单, 实际用途比较好
另外, 本系统并未对接口进行限流、白名单、黑名单等处理, 该功能均可通过拦截器实现, 当然也可结合Sentinel框架进行更好的实现, 该框架的拦截算法值得学习学习(令牌桶算法), 当然也可以手动模拟令牌桶算法(采用Redis实现)

后端项目搭建
在这里插入图片描述

设计当前还未解决的小问题

前端页面的表格的el-table的宽度问题
在这里插入图片描述

当打开控制台,会报错,是谷歌浏览器自带的功能,比较烦的,原因是Element-plus的代码有一些bug
在这里插入图片描述

只需要点击叉掉就好了

前端页面结构

在这里插入图片描述

代码下载

目录结构
在这里插入图片描述

链接:https://pan.baidu.com/s/1V0JAZNIWFsEP8svEQFgHaw
提取码:0925

代码说明

在写的时候需要注意以下几点:
1、数据库字段的长度在Java代码中也需要验证,这是一个好习惯
2、前后端通信格式要保持统一;采用Result进行封装
3、采用Redis用做缓存,这里只是演示,实际的使用会更加复杂
4、权限模型这里只是初步搭建,采用自定义注解和拦截器实现是不错的想法

Gitee链接

https://gitee.com/anxwefndu/library-management-system.git

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值