前后端分离------后端创建笔记(02)
本文章转载于【SpringBoot+Vue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客
仅用于学习和讨论,如有侵权请联系
源码:https://gitee.com/green_vegetables/x-admin-project.git
素材:https://pan.baidu.com/s/1ZZ8c-kRPUxY6FWzsoOOjtA 提取码:up4c
项目概述笔记:https://blog.csdn.net/m0_37613503/article/details/128961102
数据库笔记:https://blog.csdn.net/m0_37613503/article/details/128961401
前端笔记:https://blog.csdn.net/m0_37613503/article/details/128961447
后端笔记:https://blog.csdn.net/m0_37613503/article/details/128961569
1、response是发给后端之后返回的结果,我们要根据这些东西实现后端登录接口
1.1
2 接口数据笔记都有
2.1
3 首先实现我们的登录接口,因为登录跟用户相关,你可以用控制器,也可以重新写一个控制器
3.1 现在写登录请求的控制器
3.2 登录请求是/user拼上/login
4 返回数据是result,你想要返回什么数据是什么类型的
4.1 里面是个对象,但是我们可以放N个参数
4.2 可以返回Map,里面是Mapping方法
4.3 然后我们再return一下,这样就不会报错了
4.4 我们需要用户名和密码,这里需要参数过来,这里需要用户名和密码
4.5 用户名和密码刚好我们类中有这个参数
4.6 用他来进行接受,但是你接受不到,因为他过来是json字符串的形式过来的
4.7 用requestBody,来进行转换
5 有了用户名之后我们要怎么做,可以用来检验用户登录操作,登录操作怎么做,根据用户名到数据库里查一下,查到这个用户,就表示你的登录信息是正确的
5.1 我把user传给他,之后给我返回一个Mapper,不过这个login方法我没写
5.2 按住Alt + enter可以快速生成代码,接口也生成了,这样操作代码非常快
6 这里接口写好了,但是实现类没有,这里有未实现的方法,给他补一下
6.1 这里写一下登录逻辑
6.2 token登录凭证,单体架构是sesson
6.3
6.4 查一条数据
6.5 用它 L..
6.6 我们设置一下条件
6.7 这里我们需要传入字段名,如果你不用Lambda去写,是无法识别你是正确的还是错误的,用的时候就知道更灵活,在用的时候就知道你写没写对
6.8 双冒号后写,传入的参数 User:: (好像是为了避免写字符串)
6.9如果没有查用户名,会成为not,暂时查不到
6.10 搞一下密码
6.11 条件准备ok
7、把login 传入里面可以得到用户
7.1 判断值不等于null
8 用key值,什么uuid
8.1 返回数据我给他一个token ,返回一个key
9 这个写完之后返回控制器里面
9.1
10 我在浏览器中发送的任何请求,都是get 请求,现在可以用测试工具postman
10.1 浏览器发送的请求是post,其他的是get
11、使用postman发一个post 请求,先写一个地址
11.1再写一个json数据
12、现在已经测试成功了,返回的数据是code20000
12.1
13 登录接口实现了1半,但还差存入这个操作redis
13.1 存入redis你得保证redis是启动的
14、存入redis怎么存那,首先你得整个到我们的项目里
14.1 首先你得添加redis的依赖
15 设置redis 的服务地址和端口
15.1如果不redis的配置,等一下会产生问题
16 在com.lantu下新建一个类
16.1 写真么一个类
17 首先加一个configuration注解
17.1 这里我们就是来配置一个bean,返回名和返回类型就是他
17.2 创建一个redisTemplate对象
17.3 这里的键盘文件是第一个,写string
18、现在真么写是没有关系的,因为配置文件不全
18.1 set connection意味着连接上redis
19 保持redis里面键值化的问题
19.1 如果你不做序列化,你到redis里面去查的话,你可能看不懂,甚至你看到的是乱码,
20 我们设计一下redis
20.1 这个是针对string数据类型的方法
20.2 把对象传入到string类型的参数,你需要转化为一个json,如果你不转化为Json,你在数据库里,看不懂这个数据库
20.3 这样写完针对键,针对值都做了序列化处理了
##
21、什么叫简单数据,里面存入的用户名,姓名,电话等,这种数据都是简单的字符串,但是我往里面存入的内容包括子对象,日期,包含集合,他的序列化,这时候数据非常复杂,我得对他进行处理
21.1 
22复制这一小串代码
22.1 放到我们的项目当中
23 通过这个对象进行处理,
23.1
24 现在我想注入redis,加入注解@Autowired,在公司还会针对redis进行封装工具类-----P17
24.1
25 我们需要new一个真么样的东西
25.1
26 里面写object
26.1
27 这句话的意思是我们对键和值都做了序列化处理
27.1
28 登录是有时效的
28.1
29 这句话表示30分钟
29.1
30 重启一下按右上方的重启键,我们再重新测试一下
30.1
31、再打开redis....
31.1
32 打开dbo
32.1
33 缓存到redis里的数据
33.1
34 实现登录功能还要两个接口
34.1
35 要准备一个获取用户信息的接口
35.1
36 摁F12,点一下登录,看login
36.1
37 除了login请求之外,还有一个获取用户登录的信息
37.1
38 重点是携带一个参数
38.1
39 再看一下响应:
39.1
40 (先要学习springBoot)
40.1
41、统一的数据格式,这里我弄后端的时候,也要设计成这种模式,提前写明返回参数是什么,必须拿下springBoot
41.1
42 我们来实现一下这个接口,先来到userController控制器里,然后写一个GetMapping(“/info”)请求
42.1 我们返回什么东西那,我们返回的数据时比较复杂的,这里面是个对象,
43 回到返回的数据,写类类型,想写类类型,类类型写?也可以
43.1 我们再写一个getUserInfo的接口,他需要携带一个参数,跟在/info后面,这里需要用到一个注解RequsetParm
43.2 来获得一个类型String,这个token是什么,是我们前面登录接口里面
44 这个登录接口里面
44.1写入了一个token,暂时是UUID生成的,
45 根据token获取用户信息,从我们的redis中进行获取,因为我们把我们的数据存入到了redis里面:我们需要他把一个data数据给我
45.1 之后我们把我们的数据给带出去
45.2 再多写一个逻辑,增加一个判断
45.3 如果你没查到数据,那么你的登录一定是失效的
45.4 用户信息失效,请重新登录
45.5 这个接口我没有实现,一定要按住alt + enter,生成接口方法
46 来到我们serive里面,给他添加一个实现
46.1 这里面的逻辑就是我们写的这句话
46.2 我们需要token,从里面获取验证信息
46.3 token就是我们的key,我们现在得到的结果一定不是我们的user对象
47之前做了序列化处理,现在我们要做反序列化处理,才能够获取user对象
47.1 首先user对象不能等于null,我们才做这件事
47.2 在pom.xml中导入fastjson,导进来之后回到我们serive里面,之后我们可以将我们传入的对象,反序列化我们的目标类型
47.3 我们想要做的事情,我们想获得他的登录数据,但这个类型是不对的,这个类型是object
47.4 他这里做了重载,这里面有很多类型
47.5 本质上他是一个hashMap对象,把他转换为一个json字符串
47.6 外面套个东西,把他反序列化一下
47.7 反序列化之后,我们就可以把他的user给取出来,我们定义一个返回的数据对象,new一个hashMap
47.8 之后我们往里面放数据
47.9 用户名为name,如果你想前端不加name的话,前端代码还需要一点点微调
47.10 我们需要到loginUser里拿用户名
47.11 再存入一个数据头像,这下面是用户头像的地址
47.12 角色管理,在我们一般权限的设计里,一个用户可能会身兼数职,角色不会限定于一个,因此一般是数组
47.13 角色表,创建一个简单的角色表
47.14 角色表,一号用户他的角色就是1号角色,起到权限控制
47.15 一号角色就是admin的角色,他是个超级管理员,同时他也是一个普通员工
48 之后我想查他是什么角色,我要查这张表,把角色id给查出来
48.1 放到我们的角色列表里:把角色id查出来,放到我们这张表里
角色id
48.2 关联查询的缺点,随着数据量的增大,关联查询效率是很低的
48.3 这里我已经拿到了用户信息,现在要使用用户id
48.4 我要查询用户id,并且用户id还是1
48.5 查到了两条数据
48.6 实际我想要角色id, 我想放到我项目里面,做一个角色的名称
48.7 关联有两种方式,一种是内连接,一种是外连接
48.8 内连接就是我们角色id,和另一个id都必须存在
48.9 外连接是如果我们用户满足这张表,这张表的数据可以查出来,另一张表的数据不影响
49 如果你数据完整,内连接,外连接都一样,现在我们用内连接,关联x_role表
49.1弄了两张表
49.2 角色id 关联上
49.3 关联上用户角色等级
49.4 没有.是一种错误
现在我只想查role_name,现在我可以查到两个角色
50 现在我写外连接,左外连接,以左边为主表
50.1 外连接的写法:(我们用外连接,如果)
50.2 这个条件关联不上,但是主板的数据符合,也是可能查出来的
50.3 用内连接如果关联条件查不上,那么整条条件也查不出
51、写一条sql语句
51.1 resultType结果类型
51.2 把sql语句给复制过去
51.3 这里的1不要写死,是我们传入的参数
相关文章:

前后端分离------后端创建笔记(02)
本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论,如有侵权请联系 源码:https://gitee.com/green_vegetables/x-admin-project.git 素材:https://pan.baidu.com/s/…...
Webpack5 Preload/Prefetch技术
文章目录 什么是Preload/Prefetch技术一、Preload:确保必需资源的快速获取二、Prefetch:预加载未来可能使用的资源三、使用注意事项四、Prefetch:总结 什么是Preload/Prefetch技术 在现代Web开发中,页面加载速度对于用户体验至关…...

PHP原生类
什么是php原生类 原生类就是php内置类,不用定义php自带的类,即不需要在当前脚本写出,但也可以实例化的类 我们可以通过脚本找一下php原生类 <?php $classes get_declared_classes(); foreach ($classes as $class) {$methods get_clas…...

QGIS3.28的二次开发八:显示shp的属性表
这里实现两个基本的 GIS 软件需求:矢量图层的属性表显示,以及根据属性筛选要素。 具体需求如下: 加载一个矢量图层并打开其属性表;输入筛选条件确认无误后,画布上和属性表中均只显示筛选后的要素。 QGIS 提供了若干…...
虚拟机安装 Ubuntu桌面版,宿主机无法访问虚拟机 ufw 防火墙简单使用
虚拟机安装 Ubuntu桌面版,宿主机无法访问虚拟机 问题处理安装ssh服务ufw防火墙 放行ssh服务ufw 常用命令 问题 本次安装使用的 ubuntu-22.04.2-desktop-amd64 ,网络连接使用的是桥接,查看ubuntu的ip是正常的,与宿主机在同一个网段…...

jquery发送ajax练习
jquery发送ajax练习 工具代码运行结果 工具 HBuilder X 代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>通过ajax进行图片的提取和显示</title><style>div{background-color: beige;color: red;font-s…...

adb用法,安卓的用户CA证书放到系统CA证书下
设备需root!!设备需root!!设备需root!! 测试环境:redmi 5 plus、miui10 9.9.2dev(安卓8.1)、已root win下安装手机USB驱动(过程略,…...

【LVS-NAT配置】
配置 node1:128(客户端) node2:135(调度器) RS: node3:130 node4:132 node2添加网络适配器(仅主机模式) [rootnode2 ~]# nmtui[rootnode2 ~]#…...

时序预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元时间序列预测
时序预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元时间序列预测 目录 时序预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元时间序列预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 MATLAB实现BO-GRU贝叶斯优化门控循环单元时间序列预测。基于贝叶斯(bayes)…...

注意:阿里云服务器随机分配可用区说明
阿里云服务器如有ICP备案需求请勿选择随机可用区,因为当前地域下的可用区可能不支持备案,阿里云百科分享提醒大家,如果你的购买的云服务器搭建网站应用,网站域名需要使用这台云服务器备案的话,不要随机分配可用区&…...

【Vue】使用print.js插件实现打印预览功能,超简单
目录 一、实现效果 二、实现步骤 【1】安装插件 【2】在需要打印的页面导入 【3】在vue文件中需要打印的部分外层套一层div,给div设置id。作为打印的区域 【4】在打印按钮上添加打印事件 【5】在methods中添加点击事件 三、完整代码 一、实现效果 二、实现步…...
3.5 Spring MVC参数传递
Spring MVC的Controller接收请求参数的方式有多种,本节主要介绍Spring MVC下的HttpServletRequest、基本数据类型、Java Bean、数组、List、Map、JSON参数传递方式,同时解决POST请求中文乱码问题。 1. HttpServletRequest参数传递 Controller RequestM…...

linux程序保护机制gcc编译选项
预备知识: 计算机内存的结构通常包括以下几个主要部分: 1.代码段(Code Segment):也称为文本段,存储程序的可执行指令。代码段是被标记为可执行的,程序从代码段中获取指令并执行。 2.数据段(Data Segment):…...
指针与引用:C语言中的内存魔法
开始本篇文章之前先推荐一个好用的学习工具,AIRIght,借助于AI助手工具,学习事半功倍。欢迎访问:http://airight.fun/。 也把我学习过程中搜集的资料分享给大家,希望可以帮助大家少走弯路,链接:h…...

docker desktop搭建 nginx
【docker 桌面版】windows 使用 docker 搭建 nginx 拉取 nginx 镜像 docker pull nginx运行容器 docker run -d -p 80:8081 --name nginx nginx本地磁盘创建 nginx 目录 D:\DockerRep\nginx复制 docker 中的 nginx 配置文件 查看运行的容器 docker ps -a docker cp 9f0f82d66dd…...

Redis缓存雪崩、击穿、穿透?
我们谈谈Redis在实际项目中用作缓存时经常碰到的,也是经常面试的三大问题:缓存穿透、缓存击穿、缓存雪崩,以及这些问题的常用解决方法。 在介绍这三大问题之前,我们需要先了解Redis作为一个缓存中间件,在项目中是如何…...

Kettle系列(一)下载安装与基础配置
Kettle系列(一)下载安装与基础配置 说明一、下载二、目录结构三、基础配置(1)环境变量(2)kettle配置 四、连接mysql8五、连接其他数据库六、总结 说明 更新时间:2023/08/13 17:47 本文记录了wi…...

MuMu模拟器运行一段时间后Device.Present耗时突然上升
1)MuMu模拟器运行一段时间后Device.Present耗时突然上升 2)如何在运行过程中获得温度信息 3)Input System鼠标更换主按键的Bug 4)如何禁止Unity向https://config.uca.cloud.unity3d.com发送设备信息 这是第347篇UWA技术知识分享…...

14-矩阵相乘及其运算法则
矩阵与向量的乘法 在这一篇文章中我们就将基于上一篇重新审视矩阵的这个视点来理解矩阵的乘法,那么在这一篇,我们主要来看一下矩阵和向量的乘法。这里这个线性方程组是上一小节给大家举的模拟的一个非常简单的小型经济系统的例子,我们可以把…...

redis学习笔记(八)
文章目录 redis的配置redis的核心配置选项Redis的使用 redis的配置 cat /etc/redis/redis.confredis 安装成功以后,window下的配置文件保存在软件 安装目录下,如果是mac或者linux,则默认安装/etc/redis/redis.conf redis的核心配置选项 绑定ip:访问白名单&#x…...

Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...

从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...