SpringMVC如何接受請求引數(普通型別引數/物件型別引數/陣列/json資料等)
1、普通型別引數
(1)在可以在方法引數上使用@RequestParam注解來系結請求引數,此注解允許指定請求引數的名稱,以及是否是必須傳的引數,
@RequestMapping("/example")
public String exampleMethod(@RequestParam("paramName") String param) {
// 處理引數
return "viewName";
}
(2)如果需要傳的引數是URL的一部分,可以使用@PathVariable注解來系結路徑引數,
@RequestMapping("/example/{id}")
public String exampleMethod(@PathVariable("id") int id) {
// 處理路徑引數
return "viewName";
}
2、物件型別引數
常用的是@RequestBody注解,如果請求的內容是json或xml格式的資料,并且希望將其轉為物件,可以使用@RequestBody注解,springmvc將自動進行請求體到物件的轉換,
3、陣列型別
(1)@RequestParam注解,通過此注解來系結請求引數到陣列,使用“value”屬性指定請求引數的名稱,并將方法引數宣告為陣列型別,
@RequestMapping("/example")
public String exampleMethod(@RequestParam("myArray") String[] array) {
// 處理陣列
return "viewName";
}
(2)如果請求的路徑中有多個引數值,這些引數值通過“/”進行分離,可以使用@PathVariable注解系結這些引數到陣列,
@RequestMapping("/example/{values}")
public String exampleMethod(@PathVariable("values") String[] array) {
// 處理陣列
return "viewName";
}
4、Json資料
你可以使用 @RequestBody 注解來接收 JSON 型別的請求引數,Spring MVC 將自動將請求的 JSON 資料轉換為物件,在控制器方法中,使用@RequestBody注解,并將接收json資料的物件作為方法引數,
@RequestMapping("/example")
public String exampleMethod(@RequestBody MyObject obj) {
// 處理接收到的 JSON 資料
return "viewName";
}
當 Spring MVC 接收到請求時,它會自動將請求的 JSON 資料轉換為 MyObject 物件,并傳遞給控制器方法,
如何給客戶端回應資料(跳轉頁面&回傳資料)?
(1)可以通過回傳視圖名稱,回傳一個視圖名稱,告訴springmvc渲染對應的視圖,然后作為回應發送給客戶端,
(2)使用ModelAndAview,創建一個ModelAndView物件,把資料模型添加到MV中,并設定視圖名,然后回傳物件,springmvc會根據視圖名稱渲染對應的視圖,
(3)如果想要一個json型別或者xml格式的資料,也可以使用@ResponseBody注解,
@RequestBody與@ResponseBody的區別
@RequestBody 和 @ResponseBody 是 Spring MVC 中用于處理請求和回應體的注解,它們有以下區別:
-
@RequestBody:
-
作用:
@RequestBody用于將請求體的內容系結到方法引數上, -
使用場景:通常在處理 POST、PUT 等請求方法時,用于接收請求體中的資料,并將其轉換為物件或其他型別的引數,
-
示例:
@RequestMapping("/example") public String exampleMethod(@RequestBody MyObject obj) { // 處理接收到的請求體資料 return "response"; }
-
-
@ResponseBody:
-
作用:
@ResponseBody用于將方法回傳值直接作為回應體的內容回傳給客戶端, -
使用場景:通常在回傳 JSON、XML 或其他格式的回應時使用,將物件或其他型別的資料轉換為回應體的內容,
-
示例:
@RequestMapping("/example") @ResponseBody public MyObject exampleMethod() { MyObject obj = new MyObject(); // 處理資料并設定到 obj return obj; } -
注意:在 Spring 4.0 之后,默認情況下,
@ResponseBody注解不再需要顯式宣告,如果你使用了 Spring 4.0 或更高版本,而且沒有自定義的配置,Spring MVC 會自動將方法回傳值作為回應體回傳給客戶端,
-
綜上所述,@RequestBody 主要用于將請求體的內容系結到方法引數上,而 @ResponseBody 用于將方法回傳值直接作為回應體的內容回傳給客戶端,它們在處理請求和回應體時起到不同的作用,但可以組合使用,實作接收請求體并回傳自定義格式的回應,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/554545.html
標籤:其他
下一篇:返回列表
