前后端分离------后端创建笔记(02)

news2024/11/23 21:54:12

 本文章转载于【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不要写死,是我们传入的参数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/868681.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《甲午》观后感——GPT-3.5所写

《甲午》是一部令人深思的纪录片,通过生动的画面和真实的故事,向观众展示了中国历史上的一段重要时期。观看这部纪录片,我深受触动,对历史的认识也得到了深化。 首先,这部纪录片通过精心搜集的历史资料和珍贵的影像资料…

SLF4J日志绑定原理分析

前言 最近做项目,实际上也知道日志冲突的事,不过涉及MDC NDC数据传递,当日志框架冲突后,MDC和NDC就失效了,这里就涉及slf4j-api的MDC的绑定的过程,顺便分析了日志冲突实际生效的原因,理解SLF4J…

JavaScript类

JavaScript 类(class) 类是用于创建对象的模板。 我们使用 class 关键字来创建一个类,类体在一对大括号 {} 中,我们可以在大括号 {} 中定义类成员的位置,如方法或构造函数。 每个类中包含了一个特殊的方法 constructor(),它是类…

395. 至少有 K 个重复字符的最长子串

395. 至少有 K 个重复字符的最长子串 C代码:滑动窗口 ---- 不是吧,阿sir,这也能滑? // 返回滑动窗口的长度 // 满足条件的种类数量的可能为 [1, 26], 所以需要遍历26中情况的窗口长度 // 当 区间内所有种类数量 满足要求的种类数…

【Anaconda】安装及使用

知识目录 前言一、 Anaconda是什么二、为什么使用Anaconda三、安装步骤3.1 下载安装3.2 配置conda源 结语 前言 大家好!我是向阳花花花花,本期给大家带来的是 Anaconda 安装及使用。 每日金句分享:故事不长,也不难讲。』—— 「…

深度学习(37)—— 图神经网络GNN(2)

深度学习(37)—— 图神经网络GNN(2) 这一期主要是一些简单示例,针对不同的情况,使用的数据都是torch_geometric的内置数据集 文章目录 深度学习(37)—— 图神经网络GNN&#xff08…

SpringCloudGateway配置跨域设置以及如何本地测试跨域

问题背景 有个服务A ,自身对外提供服务,几个系统的前端页面也在调用,使用springboot 2.6.8开发的,自身因为有前端直接调用已经配置了跨域。 现在有网关服务,一部分前端通过网关访问服务A(因为之前没有网关…

Android系统-ServiceManager2

目录 引言: 获取ServiceManager 流程图 注册系统服务 获取系统服务 引言: 注册或使用服务之前,需要通过ServiceManager这个DNS来找到对应的服务。那怎么找到ServiceManager呢? 怎么注册系统服务? 怎么获取系统…

分享一组天气组件

先看效果&#xff1a; CSS部分代码&#xff08;查看更多&#xff09;&#xff1a; <style>:root {--bg-color: #E9F5FA;--day-text-color: #4DB0D3;/* 多云 */--cloudy-background: #4DB0D3;--cloudy-temperature: #E6DF95;--cloudy-content: #D3EBF4;/* 晴 */--sunny-b…

Docker高级篇_DockerFile

目录 DockerFile简介构建DockerFile构建过程解析Docker执行Dockerfile的大致流程 DockerFile常用保留字指令FROMMAINTAINERRUNEXPOSEWORKDIRUSERENVVOLUMEADDCOPYCMDENTRYPOINT案例使用虚悬镜像 Docker微服务 DockerFile简介 Dockerfile是用来构建Docker镜像的文本文件&#x…

七、解析应用程序——枚举内容与功能

文章目录 1、web抓取2、发现隐藏内容2.1 蛮力技巧2.2 通过公布的内容进行推测2.3 利用公共信息 3、应用程序页面和功能路径4、发现隐藏参数 攻击应用程序的第一步是收集和分析与其有关的一些关键信息&#xff0c;以清楚了解攻击目标。解析过程首先是枚举应用程序的内容与功能&a…

HTML详解连载(2)

HTML详解连载&#xff08;2&#xff09; 专栏链接 [link](http://t.csdn.cn/xF0H3)下面进行专栏介绍 开始喽超链接作用代码示例解释经验分享 音频标签代码示例注意强调 视频标签代码示例注意强调 列表作用&#xff1a;布局内容排列整齐的区域。分类&#xff1a;无序列表&#x…

基于Googlenet深度学习网络的人员行为动作识别matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 1. 原理 1.1 深度学习与卷积神经网络&#xff08;CNN&#xff09; 1.2 GoogLeNet 2. 实现过程 2.1 数据预处理 2.2 构建网络模型 2.3 数据输入与训练 2.4 模型评估与调优 3. 应用领域…

Eclipse(STS)Enum 格式化配置

需求 枚举类 的字段&#xff0c;一般长度较小&#xff0c;格式化后&#xff0c;多个字段会变为一行。 需求&#xff1a;希望每个字段独立一行。 格式化后的样式&#xff0c;如下图所示&#xff1a; 配置 1. Windows - Preferences 2. Java-Formatter 如果没有自定义的格…

C++ 循环

有的时候&#xff0c;可能需要多次执行同一块代码。一般情况下&#xff0c;语句是顺序执行的&#xff1a;函数中的第一个语句先执行&#xff0c;接着是第二个语句&#xff0c;依此类推。 编程语言提供了允许更为复杂的执行路径的多种控制结构。 循环语句允许我们多次执行一个…

DVWA暴力破解高级模式宏爆破

先将安全等级调至高级&#xff0c;点击submit提交 浏览器开启bp代理 kali开启bp 工具&#xff0c;开启Proxy 点击Brute Force这个选项卡 bp拦截到请求的数据包 宏设置 如果是有的bp版本比较旧&#xff0c;在旧版本的上面菜单栏有一个Project options点击去选择Session&#xff…

Android系统-进程-Binder1-概述

目录 引言&#xff1a; 一次拷贝 Binder一次通信过程 应用启动中的binder交互 C/S模式&#xff1a; Binder COMMAND BWR数据结构&#xff1a; 引言&#xff1a; Android的binder是从openbinder发展过来的。包括了binder驱动&#xff0c;Native层&#xff0c;Java层。用…

【Matlab智能算法】RBF神经网络-遗传算法(RBF-GA)函数极值寻优——非线性函数求极值

上一篇博客介绍了GRNN-GA&#xff1a;GRNN神经网络遗传算法(GRNN-GA)函数极值寻优——非线性函数求极值&#xff0c;神经网络用的是GRNN神经网络&#xff0c;RBF神经网络&#xff08;径向基函数神经网络&#xff09;和GRNN神经网络有相似之处。本篇博客将GRNN神经网络替换成RBF…

安装istio和部署实例以及仪表盘

安装Istio 接下来我们将介绍如何在 Kubernetes 集群中安装 Istio&#xff0c;这里我们使用的是最新的 1.10.3 版本。 下面的命令可以下载指定的 1.10.3 版本的 Istio: ➜ ~ curl -L https://istio.io/downloadIstio | ISTIO_VERSION1.10.3 sh -如果安装失败&#xff0c;可以…

SolidWorks不能使用选择如允许此选择将生成有冲突的前后关系

SolidWorks不能使用选择如允许此选择将生成有冲突的前后关系 1 SolidWorks不能使用选择如允许此选择将生成有冲突的前后关系 1 SolidWorks不能使用选择如允许此选择将生成有冲突的前后关系 https://www.swrjzxw.com/1556.html SolidWorks装配体时 显示 不能使用选择如允许此选…