一.項目目錄
SpringBoot項目創建之后會生成很多目錄
刪除不需要的這四個文件/目錄
目錄
二.Spring MVC 和 MVC?
Spring MVC(Spring Web MVC)
Spring Web MVC 是?個 Web 框架
MVC : Model View Controller
它是一種思想 , 它把一個項目分成了三個部分.?
View視圖層 | 界面顯示 , 人機交互 |
Controller 控制器 | 選擇處理模型 ,選擇視圖 |
Model模型層 | 處理業務邏輯 , 處理數據 . |
總結:
MVC是一種思想, 而Spring實現了這種思想, 稱為Spring MVC.
請求會直接到Controller.
SpringBoot是創建SpringMVC項目的一種方式 .? 還有其他方式.
現狀:
由于現在的項目都實現了前后端分離,后端開發人員不必編寫前端頁面,所以也就沒有了view視圖層.
因此,view又有了新的解釋,之前返回的是試圖,現在返回的是視圖所需要的數據.
三.Spring MVC
學習Spring MVC,主要學習這幾個方面 .?
1.建立連接 (客戶端和服務器)
2.請求
3.響應
@RequestMapping 路由映射
1.可以修飾方法
方法名和注解value沒有關系,建議一致.
瀏覽器127.0.0.1:8080/sayhi訪問
2.也可以修飾類
訪問路徑:類的路徑+方法路徑
瀏覽器?127.0.0.1:8080/hello/sayhi?訪問
開發中建議加上類路徑 : 避免重復/方便查找代碼
注意:
- 注解里的斜杠可以寫多層(第一個斜杠可以省略,但是不建議 )
- 注解不寫屬性名,默認是value
- 默認情況下 get 和 post 請求都是支持的 ; 也可以用method屬性限制請求方式
參數的傳遞
1.傳遞單個參數
發送請求:
要求參數的名字一致
底層邏輯:從請求的參數中獲取參數名為name的值,并給name賦值
2.傳遞多個參數
發送請求:
3.傳遞對象
開發中,接口的參數通常定義為對象
4.后端參數重命名
如果進行了重命名,必須使用重命名之后的名字name的傳遞傳參 .
- 使用了重命名注解之后,就是一個必傳的參數,否則會報錯. 但是也可以設置required為false來設置該參數為非必傳.
5.傳遞數組
傳遞數組有兩種方式.
- 用同一個參數名
當請求中同一個參數有多個時,瀏覽器就會幫我們把這個參數封裝成一個數組 .
- 使用逗號,分割傳遞
6.傳遞集合
需要添加注解我為非必傳
7.傳遞JSON
JavaScript Object Notation (JS對象說明)?, 是一種輕量級的數據交互格式 , 本質是一個對象字符串.
@RequestBody
添加注解@RequestBody將請求中的JSON轉化為Person對象
(JSON數據在body中添加)
通過Fiddler抓包,查看發送的請求的確是jason數據.
8.獲取URL中的參數
@PathVariable
添加@PathVariable注解
9.上傳文件
@RequestPart
?
注意:
- 傳參時參數的名字需要一致.
- 如果使用基本數據類型,必須要傳值,否則會報錯.
- 如果使用包裝類,如果未傳參,會使用默認值null
- 5開頭的錯誤通常是服務端錯誤? ? --- 查看日志
????????4開頭的錯誤通常是客戶端錯誤
- 狀態碼
http狀態碼??? | 不是后端定義的. | 2xx:成功? ? ? ? ? ? ? ?3xx:重定向??? 4xx:客戶端錯誤??? 5xx服務端錯誤 |
業務狀態嗎 | http響應成功的情況下,業務的響應分為不同的狀態. |
四.Cookie 和 Session
兩者是會話機制.
cookie是客戶端機制 | 問題:可以偽造 |
session是服務端機制 | 問題:分布式(部署在多個機器上) |
4.1獲取cookie
1.servlet方式
參數是請求里的內置對象.每個請求都有內置對象,如果需要就可以寫,不需要就可以不寫 .
2.注解方式 @CookieValue
4.2獲取session
1.servlet原始方式
2.注解@SessionAttribute
該注解為必傳參數,如果此時沒有session,就會直接報錯.
3.HttpSession 作為參數
紅框部分等同于HttpSession session = request.getSession( false ) ;
4.3.獲取header
1.servlet原始
2.注解 @RequestHeader
?