6. SpringMVC - 請求資料 -
阿新 • • 發佈:2021-07-01
客戶端請求引數的格式是:name=value&name=value… … 伺服器端要獲得請求的引數,有時還需要進行資料的封裝,
SpringMVC可以接收如下型別的引數:
1 基本型別引數
2 POJO型別引數
3 陣列型別引數
4 集合型別引數
Get 和 Post 方式都一樣 主要是 name 一定要對好來!
第一種: 請求資料 轉換成基本型別引數:
Controller中的業務方法的引數名稱要與請求引數的name一致,引數值會自動對映匹配。【是真的賊方便,但是引數的型別 和 請求的name名【鍵】 要 和 形參型別 和 形參名 一致哦.】
package com.bihu.Controller;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class TestController { @RequestMapping(value = "/go") @ResponseBody() //不進行跳轉 直接進行跳轉 // 訪問http://localhost:8080/go?name=bihu&age=18 即可,自動解析 但這裡是Get方式public void GoUrl(String name,int age) { System.out.println(name); System.out.println(age); } }
第二種: 請求資料 轉換成 POJO型別引數
Spring 地底層已經做好很多工作,包括自動對映:
POJO是一個實體類啊【簡單的Java物件】
我們只需要用物件【物件需要有set、get 方法哦!! 】當形參 然後 直接進來的資料SpringMVC 自動對映進來注入:
Tips: 我這裡有一個 student 類 ,就一個name 和 age ,注意 一定一定 形參名 要吻合 請求name【鍵】 不然自動對映失敗
package com.bihu.Controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class TestController { @RequestMapping(value = "/go") @ResponseBody() //不進行跳轉 直接進行跳轉 // 訪問http://localhost:8080/go?name=BiHu&age=19 即可,自動解析成物件 但這裡是Get方式 public void GoUrl(Student s) { System.out.println("姓名:" + s.getName()); System.out.println("年齡:" + s.getAge()); } }
主要是吻合 型別 和 名字,不然。。。。
3 請求資料過來 轉換成 陣列型別
這個也一樣的 就是說 直接陣列做形參 然後名字不對應都可以 他會自己封裝 ,但我建議陣列過來後轉成list , 轉為陣列不常用啊 一般都是物件POJO用的多:
注意啊 形參名字一定一定要和 你 請求的攜帶的資料的 鍵 一制 我說了N遍了 一直在這裡吃虧。
package com.bihu.Controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.lang.reflect.Array; import java.util.Arrays; import java.util.List; @Controller public class TestController { @RequestMapping(value = "/go") @ResponseBody() //不進行跳轉 直接進行跳轉 // 訪問http://localhost:8080/go?strings=%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%85%83%E7%B4%A0&strings=%E7%AC%AC%E4%BA%8C%E4%B8%AA%E5%85%83%E7%B4%A0&strings=%E7%AC%AC%E4%B8%89%E4%B8%AA%E5%85%83%E7%B4%A0&strings=%E7%AC%AC%E5%9B%9B%E4%B8%AA%E5%85%83%E7%B4%A0&strings=%E7%AC%AC%E4%BA%94%E4%B8%AA%E5%85%83%E7%B4%A0 // 即可,自動解析成陣列 但這裡是Get方式 注意上面的 鍵都是 strings的 啊! public void GoUrl(String[] strings) { //列印一下 for (String t:strings){ System.out.println(t); } } }
4.