看完這篇博客你能學到什么
- 理解JSON的使用
- 理解注解@PathVariable
- 理解解注解@RequestPart
- 理解cookie和Session的基本概念
- 理解cookie和Session的區別
如果想真正掌握,還需要自己勤加練習。
正文
JSON
JSON概念
JSON:JavaScript Object Notation 【JavaScript 對象表?法】
簡單來說:JSON就是?種數據格式, 有??的格式和語法, 使??本表??個對象或數組的信息, 因此JSON本質是字符串. 主要負責在不同的語?中數據傳遞和交換.
類似于:
? 國際通?語?-英語
? 中國56個?族不同地區的通?語?-普通話
有??的語法, 其他語?也認識.
JSON與Javascript的關系
沒有關系, 只是語法相似, js開發者能更快的上??已, 但是他的語法本??較簡單, 所以也很好學
JSON的語法:
- 數據在 鍵值對(Key/Value) 中
- 數據由逗號 , 分隔
- 對象? {} 表?
- 數組? [] 表?
- 值可以為對象, 也可以為數組, 數組中可以包含多個對象
- 下面有一段JSON已經格式化的代碼,可以看一下
{
"squadName": "Super hero squad",
"homeTown": "Metro City",
"formed": 2016,
"secretBase": "Super tower",
"active": true,
"members": [{
"name": "Molecule Man",
"age": 29,
"secretIdentity": "Dan Jukes",
"powers": ["Radiation resistance", "Turning tiny", "Radiation
blast"]
}, {
"name": "Madame Uppercut",
"age": 39,
"secretIdentity": "Jane Wilson",
"powers": ["Million tonne punch", "Damage resistance", "Superhuman
reflexes"]
}, {
"name": "Eternal Flame",
"age": 1000000,
"secretIdentity": "Unknown",
"powers": ["Immortality", "Heat Immunity", "Inferno",
"Teleportation", "Interdimensional travel"]
}]
}
如果不按照格式化直接表示,其實JSON的也就是一個很長的字符串,只不過格式化以后更加易讀了,如:
{"squadName":"Super hero squad","homeTown":"Metro
City","formed":2016,"secretBase":"Super tower","active":true,"members":
[{"name":"Molecule Man","age":29,"secretIdentity":"Dan Jukes","powers":
["Radiation resistance","Turning tiny","Radiation blast"]},{"name":"Madame
Uppercut","age":39,"secretIdentity":"Jane Wilson","powers":["Million tonne
punch","Damage resistance","Superhuman reflexes"]},{"name":"Eternal
Flame","age":1000000,"secretIdentity":"Unknown","powers":["Immortality","Heat
Immunity","Inferno","Teleportation","Interdimensional travel"]}]}
- 結合代碼的JSON說明
JSON的優點
- 簡單易?: 語法簡單,易于理解和編寫,可以快速地進?數據交換
- 跨平臺?持: JSON可以被多種編程語?解析和?成, 可以在不同的平臺和語?之間進?數據交換和
傳輸 - 輕量級: 相較于XML格式, JSON數據格式更加輕量級, 傳輸數據時占?帶寬較?, 可以提?數據傳輸
速度 - 易于擴展: JSON的數據結構靈活,?持嵌套對象和數組等復雜的數據結構,便于擴展和使?
- 安全性: JSON數據格式是?種純?本格式,不包含可執?代碼, 不會執?惡意代碼,因此具有較?
的安全性
JSON的使用
接下里我們就要演示如何使用JSON來傳遞對象,詳細回應上一篇文章末尾的問題。還是依據我們上一次的Person對象的例子。
1,首先打開Postman
,2,編寫代碼,接收JSON對象, 需要使? @RequestBody 注解
@PathVariable
作用是:獲取URL中參數
path variable: 路徑變量
和字?表達的意思?樣, 這個注解主要作?在請求URL路徑上的數據綁定
默認傳遞參數寫在URL上,SpringMVC就可以獲取到
實例如下:
@RequestPart
作用:上傳?件
操作演示:
cookie和Session的基本概念
先看一張圖:
- 舉個例子,你們可以邊看圖邊依據例子理解。
假如有天你生病了要去醫院,首先你要去掛號吧,你請求掛號這件事就相當于一個http請求,此時工作人員就會在醫院后臺導入你的個人信息,就相當于創建了客戶的Session,創建完之后,會返回一個SessiId給你,而這個Sessionid就儲存在cookie中,而cookie就以就診卡的形式交到了你的手中,以后你再來看病只需要出示你的就診卡就行了,醫院的系統就會根據就診卡里存放的Sessionid來找到你的個人信息。
這就是cookie與Session - Session的本質就是?個 “哈希表”, 存儲了?些鍵值對結構. Key 就是SessionID, Value 就是??信息(??信息可以根據需求靈活設計).
如圖:
Cookie 和 Session 的區別
- Cookie 是客?端保存??信息的?種機制. Session 是服務器端保存??信息的?種機制.
- Cookie 和 Session之間主要是通過 SessionId 關聯起來的, SessionId 是 Cookie 和 Session 之間的橋梁
- Cookie 和 Session 經常會在?起配合使?. 但是不是必須配合.
- 完全可以? Cookie 來保存?些數據在客?端. 這些數據不?定是???份信息, 也不?定是
SessionId - Session 中的sessionId 也不需要?得通過 Cookie/Set-Cookie 傳遞, ?如通過URL傳遞.
- 完全可以? Cookie 來保存?些數據在客?端. 這些數據不?定是???份信息, 也不?定是