?本文章轉(zhuǎn)載于【SpringBoot+Vue】全網(wǎng)最簡單但實(shí)用的前后端分離項目實(shí)戰(zhàn)筆記 - 前端_大菜007的博客-CSDN博客
僅用于學(xué)習(xí)和討論,如有侵權(quán)請聯(lián)系
源碼: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
數(shù)據(jù)庫筆記: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是發(fā)給后端之后返回的結(jié)果,我們要根據(jù)這些東西實(shí)現(xiàn)后端登錄接口
?
1.1
2 接口數(shù)據(jù)筆記都有
?
2.1
3 首先實(shí)現(xiàn)我們的登錄接口,因為登錄跟用戶相關(guān),你可以用控制器,也可以重新寫一個控制器
3.1 現(xiàn)在寫登錄請求的控制器
3.2 登錄請求是/user拼上/login
4 返回數(shù)據(jù)是result,你想要返回什么數(shù)據(jù)是什么類型的
4.1 里面是個對象,但是我們可以放N個參數(shù)
4.2?可以返回Map,里面是Mapping方法
?4.3 然后我們再return一下,這樣就不會報錯了
4.4 我們需要用戶名和密碼,這里需要參數(shù)過來,這里需要用戶名和密碼
?4.5 用戶名和密碼剛好我們類中有這個參數(shù)
?4.6 用他來進(jìn)行接受,但是你接受不到,因為他過來是json字符串的形式過來的
?4.7 用requestBody,來進(jìn)行轉(zhuǎn)換
5 有了用戶名之后我們要怎么做,可以用來檢驗用戶登錄操作,登錄操作怎么做,根據(jù)用戶名到數(shù)據(jù)庫里查一下,查到這個用戶,就表示你的登錄信息是正確的
5.1 我把user傳給他,之后給我返回一個Mapper,不過這個login方法我沒寫
5.2 按住Alt + enter可以快速生成代碼,接口也生成了,這樣操作代碼非常快
?
6 這里接口寫好了,但是實(shí)現(xiàn)類沒有,這里有未實(shí)現(xiàn)的方法,給他補(bǔ)一下
6.1 這里寫一下登錄邏輯
6.2 token登錄憑證,單體架構(gòu)是sesson
?6.3
6.4 查一條數(shù)據(jù)
?6.5 用它 L..
6.6 我們設(shè)置一下條件
6.7 這里我們需要傳入字段名,如果你不用Lambda去寫,是無法識別你是正確的還是錯誤的,用的時候就知道更靈活,在用的時候就知道你寫沒寫對
?6.8 雙冒號后寫,傳入的參數(shù) User:: (好像是為了避免寫字符串)
6.9如果沒有查用戶名,會成為not,暫時查不到
6.10 搞一下密碼
6.11 條件準(zhǔn)備ok
7、把login 傳入里面可以得到用戶
7.1 判斷值不等于null?
8?用key值,什么uuid
8.1?返回數(shù)據(jù)我給他一個token ,返回一個key
9?這個寫完之后返回控制器里面
9.1
10?我在瀏覽器中發(fā)送的任何請求,都是get 請求,現(xiàn)在可以用測試工具postman
10.1?瀏覽器發(fā)送的請求是post,其他的是get?
11、使用postman發(fā)一個post 請求,先寫一個地址
?11.1再寫一個json數(shù)據(jù)
12、現(xiàn)在已經(jīng)測試成功了,返回的數(shù)據(jù)是code20000
12.1
13?登錄接口實(shí)現(xiàn)了1半,但還差存入這個操作redis
13.1?存入redis你得保證redis是啟動的
14、存入redis怎么存那,首先你得整個到我們的項目里
14.1?首先你得添加redis的依賴
15?設(shè)置redis 的服務(wù)地址和端口
?15.1如果不redis的配置,等一下會產(chǎn)生問題
16?在com.lantu下新建一個類
?16.1?寫真么一個類
17?首先加一個configuration注解
17.1 這里我們就是來配置一個bean,返回名和返回類型就是他
?17.2?創(chuàng)建一個redisTemplate對象
?17.3?這里的鍵盤文件是第一個,寫string
18、現(xiàn)在真么寫是沒有關(guān)系的,因為配置文件不全
18.1?set connection意味著連接上redis?
19?保持redis里面鍵值化的問題
19.1?如果你不做序列化,你到redis里面去查的話,你可能看不懂,甚至你看到的是亂碼,
20?我們設(shè)計一下redis?
20.1 這個是針對string數(shù)據(jù)類型的方法
?20.2 把對象傳入到string類型的參數(shù),你需要轉(zhuǎn)化為一個json,如果你不轉(zhuǎn)化為Json,你在數(shù)據(jù)庫里,看不懂這個數(shù)據(jù)庫
?20.3 這樣寫完針對鍵,針對值都做了序列化處理了
##
21、什么叫簡單數(shù)據(jù),里面存入的用戶名,姓名,電話等,這種數(shù)據(jù)都是簡單的字符串,但是我往里面存入的內(nèi)容包括子對象,日期,包含集合,他的序列化,這時候數(shù)據(jù)非常復(fù)雜,我得對他進(jìn)行處理
21.1?
?22復(fù)制這一小串代碼
22.1 放到我們的項目當(dāng)中
23 通過這個對象進(jìn)行處理,
23.1
24 現(xiàn)在我想注入redis,加入注解@Autowired,在公司還會針對redis進(jìn)行封裝工具類-----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里的數(shù)據(jù)
33.1
34?實(shí)現(xiàn)登錄功能還要兩個接口
34.1
35?要準(zhǔn)備一個獲取用戶信息的接口
35.1
36?摁F12,點(diǎn)一下登錄,看login?
36.1
37 除了login請求之外,還有一個獲取用戶登錄的信息
37.1
38 重點(diǎn)是攜帶一個參數(shù)
38.1
39 再看一下響應(yīng):
39.1
40 (先要學(xué)習(xí)springBoot)
40.1
41、統(tǒng)一的數(shù)據(jù)格式,這里我弄后端的時候,也要設(shè)計成這種模式,提前寫明返回參數(shù)是什么,必須拿下springBoot
41.1
42 我們來實(shí)現(xiàn)一下這個接口,先來到userController控制器里,然后寫一個GetMapping(“/info”)請求
42.1 我們返回什么東西那,我們返回的數(shù)據(jù)時比較復(fù)雜的,這里面是個對象,
43 回到返回的數(shù)據(jù),寫類類型,想寫類類型,類類型寫?也可以
43.1 我們再寫一個getUserInfo的接口,他需要攜帶一個參數(shù),跟在/info后面,這里需要用到一個注解RequsetParm
43.2 來獲得一個類型String,這個token是什么,是我們前面登錄接口里面
44 這個登錄接口里面
44.1寫入了一個token,暫時是UUID生成的,
?
45 根據(jù)token獲取用戶信息,從我們的redis中進(jìn)行獲取,因為我們把我們的數(shù)據(jù)存入到了redis里面:我們需要他把一個data數(shù)據(jù)給我
45.1 之后我們把我們的數(shù)據(jù)給帶出去
?45.2 再多寫一個邏輯,增加一個判斷
45.3 如果你沒查到數(shù)據(jù),那么你的登錄一定是失效的
?45.4 用戶信息失效,請重新登錄
45.5 這個接口我沒有實(shí)現(xiàn),一定要按住alt + enter,生成接口方法
46 來到我們serive里面,給他添加一個實(shí)現(xiàn)
46.1 這里面的邏輯就是我們寫的這句話
?46.2 我們需要token,從里面獲取驗證信息
?46.3 token就是我們的key,我們現(xiàn)在得到的結(jié)果一定不是我們的user對象
47之前做了序列化處理,現(xiàn)在我們要做反序列化處理,才能夠獲取user對象
47.1 首先user對象不能等于null,我們才做這件事
?47.2 在pom.xml中導(dǎo)入fastjson,導(dǎo)進(jìn)來之后回到我們serive里面,之后我們可以將我們傳入的對象,反序列化我們的目標(biāo)類型?
47.3 我們想要做的事情,我們想獲得他的登錄數(shù)據(jù),但這個類型是不對的,這個類型是object
?47.4 他這里做了重載,這里面有很多類型
?47.5 本質(zhì)上他是一個hashMap對象,把他轉(zhuǎn)換為一個json字符串
47.6 外面套個東西,把他反序列化一下?
47.7?反序列化之后,我們就可以把他的user給取出來,我們定義一個返回的數(shù)據(jù)對象,new一個hashMap
47.8? 之后我們往里面放數(shù)據(jù)
?47.9 用戶名為name,如果你想前端不加name的話,前端代碼還需要一點(diǎn)點(diǎn)微調(diào)
?47.10 我們需要到loginUser里拿用戶名
?47.11 再存入一個數(shù)據(jù)頭像,這下面是用戶頭像的地址
?
?
?
47.12 角色管理,在我們一般權(quán)限的設(shè)計里,一個用戶可能會身兼數(shù)職,角色不會限定于一個,因此一般是數(shù)組
47.13 角色表,創(chuàng)建一個簡單的角色表
?47.14 角色表,一號用戶他的角色就是1號角色,起到權(quán)限控制?
47.15? 一號角色就是admin的角色,他是個超級管理員,同時他也是一個普通員工
48 之后我想查他是什么角色,我要查這張表,把角色id給查出來
48.1 放到我們的角色列表里:把角色id查出來,放到我們這張表里
角色id
?
48.2 關(guān)聯(lián)查詢的缺點(diǎn),隨著數(shù)據(jù)量的增大,關(guān)聯(lián)查詢效率是很低的
48.3 這里我已經(jīng)拿到了用戶信息,現(xiàn)在要使用用戶id
?48.4? 我要查詢用戶id,并且用戶id還是1
?48.5 查到了兩條數(shù)據(jù)
?48.6 實(shí)際我想要角色id,?我想放到我項目里面,做一個角色的名稱
48.7 關(guān)聯(lián)有兩種方式,一種是內(nèi)連接,一種是外連接?
48.8 內(nèi)連接就是我們角色id,和另一個id都必須存在
?48.9 外連接是如果我們用戶滿足這張表,這張表的數(shù)據(jù)可以查出來,另一張表的數(shù)據(jù)不影響
49 如果你數(shù)據(jù)完整,內(nèi)連接,外連接都一樣,現(xiàn)在我們用內(nèi)連接,關(guān)聯(lián)x_role表
?
49.1弄了兩張表
?49.2 角色id 關(guān)聯(lián)上
?49.3 關(guān)聯(lián)上用戶角色等級?
49.4 沒有.是一種錯誤
?
?現(xiàn)在我只想查role_name,現(xiàn)在我可以查到兩個角色
50 現(xiàn)在我寫外連接,左外連接,以左邊為主表
50.1 外連接的寫法:(我們用外連接,如果)
?50.2 這個條件關(guān)聯(lián)不上,但是主板的數(shù)據(jù)符合,也是可能查出來的
?50.3 用內(nèi)連接如果關(guān)聯(lián)條件查不上,那么整條條件也查不出
51、寫一條sql語句
51.1 resultType結(jié)果類型
?51.2 把sql語句給復(fù)制過去
文章來源:http://www.zghlxwxcb.cn/news/detail-650347.html
?51.3 這里的1不要寫死,是我們傳入的參數(shù)
文章來源地址http://www.zghlxwxcb.cn/news/detail-650347.html
到了這里,關(guān)于前后端分離------后端創(chuàng)建筆記(02)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!