0 引言
作者正在學習SpringMVC相關內容,學到了一些知識,希望分享給需要短時間想要了解SpringMVC的讀者朋友們,想用通俗的語言講述其中的知識,希望與諸位共勉,共同進步!
本系列會持續更新!!可以放心食用!
1 十個請求處理實驗中的后五個
1.1 實驗六 POJO級聯封裝復雜屬性
首先我們現根據實驗六的內容先填寫相關內容,點擊注冊:
并看一下發送的請求為Get類型,我們先來看一下它的請求地址后面帶的參數:
1)username=Lin&password=1234&cellphone=12345
2)&address.province=福建省&address.city=廈門市&address.area=翔安區
3)&hobby=足球&hobby=籃球
4)&sex=男
5)&grade=一年級&agreement=on
我們發現1/4/5行都是簡單類型屬性;第二行是一個需要封裝成一個POJO對象(因為是.出來的);第三行需要封裝成一個數組,這樣的一個復雜的POJO類型,后端應該怎么樣來接這個數據呢?
首先必須要先寫一個POJO對象來封裝他們:
import lombok.Data;@Data
public class People {//基礎屬性private String username;private String password;private String cellphone;private boolean agreement;private String sex;private String grade;//POJO對象private Address address;//數組private String[] hobby;}@Data
class Address {private String province;private String city;private String area;
}
然后編寫Comtroller代碼:
@RequestMapping(value = "/handle06")public String handle06(People people){System.out.println(people);return "ok!!!";}
隨后進行測試:
網頁端:
?
后端:
?
1.2?實驗七?@RequestBody注解接收JSON格式數據
實驗七讓我們自己使用postman進行傳輸JSON格式的數據,
首先編寫后端java代碼(需要帶上注解@RequestBody,表明前端傳進來的數據是JSON格式的):
@RequestMapping(value = "/handle07")public String handle07(@RequestBody People people){System.out.println(people);return "ok!!!";}
我們就拿實驗六中的數據,進行JSON格式的封裝(JSON格式的數據如下,省的大伙兒再打一遍了):
{
? ? "username":"小林學編程",
? ? "password":"123456",
? ? "cellphone":"1234567",
? ? "agreement":"true",
? ? "sex":"男",
? ? "hobby":["籃球","足球"],
? ? "address":{
? ? ? ? "province":"福建省",
? ? ? ? "city":"廈門市",
? ? ? ? "area":"翔安區"
? ? }
}
隨后打開postman進行測試:
?
進行測試:
postman端:
?
后端:
?
1.3?實驗八?文件上傳
進入實驗八:
當我們發送注冊請求時:
?
看F12中的請求體中的數據,有兩個是圖片文件:
?
要想后端收到文件可以這么寫,使用MultipartFile類進行接收:
@RequestMapping(value = "/handle08")public String handle08(People people,@RequestParam("headerImg") MultipartFile headerImg,@RequestParam("lifeImg") MultipartFile lifeImg) throws IOException {//獲得原始文件名String headerImgName = headerImg.getOriginalFilename();// 保存圖片到本地headerImg.transferTo(new File("D:\\"+headerImgName));return "ok!!!";}
并將文件保存至我的D盤當中。
測試;
網頁端:
?
文件是否導入D盤中:
?
1.4?實驗九?HttpEntity獲得整個請求頭和請求體
前面我們分別測試了單獨獲得請求頭和請求體的內容,我們有沒有一種方法兩種都能獲得呢?有的兄弟有的,那就是HttpEntity類,java代碼可以這樣寫:
@RequestMapping(value = "/handle09")public String handle09(HttpEntity<People> httpEntity){//獲得請求頭System.out.println("請求頭" + httpEntity.getHeaders());//獲得請求體System.out.println("請求體" + httpEntity.getBody());return "ok!!!";}
注意:HttpEntity<People>中的泛型指的是請求體中的數據類型!
然后使用postman發出請求:
?
測試結果:
postman端:
?
終端:
?
1.5?實驗十?傳入原生API(不推薦)
如果你是一個懷舊的人,可以使用原生的web處理API進行調用(這種方法不推薦,有更好的工具為啥不用)
@RequestMapping(value = "/handle10")public String handle10(HttpServletRequest request, HttpServletResponse response) throws IOException {//進行原始的操作return "ok!!!";}
具體的操作留給讀者自己去寫具體的操作,本篇不再重復。
2 十個實驗的測試代碼
如果大家也不想敲代碼的話,那就可以直接在我的gitee地址里面下載十個實驗的測試代碼:
lin/請求測試十個實驗https://gitee.com/lin2002wei/Request_code
參考:
P96-P100
100.請求處理 -實驗10:傳入原生API_嗶哩嗶哩_bilibili