(SpringMVC)請求參數的綁定

一、綁定說明

(1)綁定的機制
我們都知道,表單中請求參數都是基於 key=value 的。
SpringMVC 綁定請求參數的過程是通過把表單提交請求參數,作爲控制器中方法參數進行綁定的。

(2)支持的數據類型
基本類型參數:包括基本類型和 String 類型
POJO 類型參數:包括實體類,以及關聯的實體類
數組和集合類型參數:包括 List 結構和 Map 結構的集合(包括數組)
SpringMVC 綁定請求參數是自動實現的,但是要想使用,必須遵循使用要求。

(3)使用要求
如果是基本類型或者 String 類型:要求我們的參數名稱必須和控制器中方法的形參名稱保持一致。 (嚴格區分大小寫)
如果是 POJO 類型,或者它的關聯對象:要求表單中參數名稱和 POJO 類的屬性名稱保持一致。並且控制器方法的參數類型是 POJO 類型。
如果是集合類型,有兩種方式:

第一種:
要求集合類型的請求參數必須在 POJO 中。在表單中請求參數名稱要和 POJO 中集合屬性名稱相同。
給 List 集合中的元素賦值, 使用下標。
給 Map 集合中的元素賦值, 使用鍵值對。
第二種:
接收的請求參數是 json 格式數據。需要藉助一個註解實現。

注意:它還可以實現一些數據類型自動轉換。 內置轉換器全都在:

org.springframework.core.convert.support 包下。 有:
java.lang.Boolean -> java.lang.String : ObjectToStringConverter
java.lang.Character -> java.lang.Number : CharacterToNumberFactory
java.lang.Character -> java.lang.String : ObjectToStringConverter
java.lang.Enum -> java.lang.String : EnumToStringConverter
java.lang.Number -> java.lang.Character : NumberToCharacterConverter
java.lang.Number -> java.lang.Number : NumberToNumberConverterFactory
java.lang.Number -> java.lang.String : ObjectToStringConverter
java.lang.String -> java.lang.Boolean : StringToBooleanConverter
java.lang.String -> java.lang.Character : StringToCharacterConverter
java.lang.String -> java.lang.Enum : StringToEnumConverterFactory
java.lang.String -> java.lang.Number : StringToNumberConverterFactory
java.lang.String -> java.util.Locale : StringToLocaleConverter
java.lang.String -> java.util.Properties : StringToPropertiesConverter
java.lang.String -> java.util.UUID : StringToUUIDConverter
java.util.Locale -> java.lang.String : ObjectToStringConverter
java.util.Properties -> java.lang.String : PropertiesToStringConverter
java.util.UUID -> java.lang.String : ObjectToStringConverter
......
如遇特殊類型轉換要求,需要我們自己編寫自定義類型轉換器。

二、使用示例

(1)基本類型和String作爲參數
在這裏插入圖片描述
(2)POJO類型作爲參數

@Data
public class User {
    private String uname;
    private Integer age;
}
@Data
public class Account {
    private String username;
    private String password;
    private Double money;
    private User user;
}

在這裏插入圖片描述
(3)POJO 類中包含集合類型參數

@Date
public class User implements Serializable {
private String username;
private String password;
private Integer age;
private List<Account> accounts;
private Map<String,Account> accountMap;
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章