Spring Boot 前後端傳值
寫在前面:
前端向背景傳遞的參數形式無非就這幾種:
- 請求參數路徑傳遞(也就是通過URL攜帶資料,背景從URL中擷取資料。當你觀察URL的時候,你會發現URL中有很多帶?的資料,通常情況下,這種資料傳遞方式就屬于請求參數路徑傳遞。當然,請求參數;路徑傳遞不止這一種)
- Body參數(通俗講就是前端向後端傳遞Json資料,那麼啥叫Json資料呢,你可以将他了解為類屬性以及值組成的Kay-Value對、類對象實體或者類對象連結清單等結構化資料)
- 請求頭參數
- Cookie
背景向前端傳遞資料更為簡單:
- 模闆(可以了解為一個頁面,但是這種方式将前後端混在一起,不符合現在所推薦的前後端完全解耦的形式,故不推薦。那麼問題來了?啥叫前後端完全解耦。。。。)
- JSON資料(同上文中所述的Json)
前後端完全解耦意味着前端和後端分屬于兩個完全獨立的工程目錄
正文開始:
前端到後端:
1.前端傳遞到後端的資料類型包括:請求路徑參數、Body參數、請求頭參數、Cookie
2.前端資料到後端傳遞資料常見注解:
- @PathVariable:一般用于URI template樣式映射,即url/{param}形式(URL路徑參數)。實際中,多用于擷取GET,DELETE,PUT請求方法的URL後面的參數。
- @RequestParam:一般用于擷取URL路徑傳參方式所傳遞參數。@RequestBody:最常用注解,用于擷取Body參數。
- @RequestHead:用于擷取頭資訊裡的值
- @CookieValve:用于擷取Cookie值
3.請求路徑參數:
請求路徑參數傳遞常見于GET請求。該種資料采用明文進行資料傳輸,故其一般用于擷取一些無關重要的使用者資訊。該方式有兩種參數傳遞形式:URL路徑傳參、URL路徑參數
(1)URL路徑傳參
URL路徑傳參使用注解@RequestParam進行前端資料擷取
例:
http://localhost:8080/student?name=SanerLiu
(2)URL路徑參數
URL路徑參數使用注解@PathVariable進行前端資料擷取
例:
http://localhost:8080/student/SanerLiu/123
4.Body參數
Body參數傳遞常見于POST請求,資料格式推薦使用Json格式進行傳遞。常用注釋:@RequestParam和@RequestBody

注意;@RequestBody,它是用來處理前台定義發來的資料Content-Type: 而不是application/x-www-form-urlencoded編碼的内容,例如application/json, application/xml等;使用@RequestBody注解接收參數的時候,從名稱上來看也就是說要讀取的資料在請求體裡,前台的Content-Type必須要改為application/json,是以要發post請求,因為Ajax使用的POST,并且發送的是JSON對象。前端必須指定請求json資料的contentType為:application/json,否則會報類型不支援的異常錯誤“org.springframework.web.HttpMediaTypeNotSupportedException”
當Ajax以application/x-www-form-urlencoded格式上傳即使用JSON對象,背景隻能使用@RequestParam 或者Servlet擷取參數。 當Ajax以application/json格式上傳即使用JSON字元串,背景可以使用@RquestBody或者@RequestParam擷取。
後端到前端:
後端到前端傳遞資料:對象(Json)、字元串、模闆;
其中,對象和字元串需要通過注解@RestController;模闆需要使用注解@Controller。由于模闆的使用不符合前後端分離的原則,是以,實際中一般不推薦使用這種方法。
注意:SpringBoot中常見模闆:
- Freemarke模闆
- Thymeleaf模闆
- Velocity模闆
- JSP(不推薦)