天天看點

Spring Boot 前後端傳值Spring Boot 前後端傳值

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

Spring Boot 前後端傳值Spring Boot 前後端傳值

注意;@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(不推薦)