前言
今天我們聊一聊關於url地址中的傳遞的參數是如何與我們後端的邏輯代碼對應的。
1. 提交的參數名稱和處理方法的參數名一致
由於MVC底層具有良好的匹配規範,我們不必再像JavaWeb那樣通過request.getParameter(“xxx”) 獲取前端傳遞的參數了,只要名字一致可以直接獲取。
[1] 提交數據: http://localhost:8080/hello?name=gs
[2] 處理方法
這裏的name可以直接獲取url中參數傳遞的值
@RequestMapping("/hello")
public String hello(String name){
System.out.println(name);
return "hello";
}
控制檯上可以輸出: gs
2. 提交的參數的名稱和處理方法的參數名不一致
通過@RequestParam指定對應的參數名稱
[1] 提交數據:http://localhost:8080/hello?username=gs
[2] 處理方法(通過@RequestParam映射相應的參數名)
//@RequestParam("username"): username提交的域的名稱
@RequestMapping("/hello")
public String hello(@RequestParam("username") String name){
System.out.println(name);
return "hello";
}
控制檯上可以輸出: gs
3. 提交的是一個對象
由於這裏不是單一的數據類型,要求我們表單提交的數據封裝成一個對象,且表單項的名字要和對象的屬性名一致
[1] 編寫實體類 (這裏省略了get,set方法)
User.class
package com.gs.pojo;
public class User {
private int id;
private String name;
private int age;
}
[2] 提交的數據爲:http://localhost:8080/user/t2?id=1&name=gs&age=18
[3] 處理的方法
通過一個對象封裝前端傳遞的參數
@GetMapping("/t2")
public String test2(User user){
System.out.println(user);
//1.視圖跳轉
return "test";
}
控制檯輸出的數據
聊完後臺接收前端的數據後,我們再談談後臺如何傳遞數據給前端
4. 數據顯示到前端
共有三種方式:
第一種通過ModelAndView (這個不僅可以封裝數據,還可以設置視圖名。在實現接口的方式中較爲常用)
第二種通過ModelMap (它繼承了LinkedHashMap,除了傳遞數據後,同時擁有LinkedHashMap的方法和屬性)
第三種通過Model (這是ModelMap 的精簡類型,它只負責傳遞數據,操作簡單,使用廣泛)
簡單對比:
Model :只有寥寥幾個方法只適合用於存儲數據,簡化了新手對Model對象的操作和理解
ModelMap: 繼承了LinkedHashMap,除了實現自身的一些方法,同時擁有LinkedHashMap的方法和屬性
ModelAndView: 可以在存儲數據的同時,設置返回的邏輯視圖,進行控制層的跳轉 (一般使用在控制層是實現接口的情況下,但現在的開發中大多使用註解類型,所以這個比較少用,我們一般都直接使用Model即可)