數(shù)據(jù)綁定介紹
Spring MVC是怎樣完成的數(shù)據(jù)綁定
- 在數(shù)據(jù)綁定過程中,Spring MVC框架會通過數(shù)據(jù)綁定組件(DataBinder)將請求參數(shù)串的內(nèi)容進(jìn)行類型轉(zhuǎn)換垢箕,然后將轉(zhuǎn)換后的值賦給控制類中方法的形參,這樣后臺方法就可以正確綁定并獲取客戶端請求攜帶的參數(shù)了
數(shù)據(jù)綁定流程
- 1镶摘、Spring MVC將ServletRequest對象傳遞給DataBinder
- 2钦扭、將處理方法的入?yún)ο髠鬟f給DataBinder
- 3、DataBinder調(diào)用ConversionService組件進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換半夷、數(shù)據(jù)格式轉(zhuǎn)換等工作,并將ServletRequest對象中的消息填充到參數(shù)對象中
- 4迅细、調(diào)用Validator組件對已經(jīng)綁定了請求消息數(shù)據(jù)的參數(shù)對象進(jìn)行數(shù)據(jù)合法性校驗
- 5玻熙、校驗完成后會生成數(shù)據(jù)綁定結(jié)果BindingResult對象,Spring MVC會將BindingResult對象中的內(nèi)容賦給處理方法的相應(yīng)參數(shù)
綁定簡單數(shù)據(jù)類型
- 簡單數(shù)據(jù)類型的綁定疯攒,就是Java中幾種基本數(shù)據(jù)類型的綁定嗦随,如int、String敬尺、Double等類型
- 注意:有時前端請求中參數(shù)名和后臺控制器類方法中的形參名不一樣枚尼,會導(dǎo)致后臺無法正確綁定并接收到前端請求的參數(shù)(參數(shù)名不一樣時會在控制臺輸出null)
-
解決:使用Spring MVC提供的@RequestParam注釋類型進(jìn)行間接數(shù)據(jù)綁定
綁定默認(rèn)數(shù)據(jù)類型
-
根據(jù)客戶端請求參數(shù)類型和個數(shù)的不同,將Spring MVC中的數(shù)據(jù)綁定分為簡單數(shù)據(jù)綁定砂吞、復(fù)雜數(shù)據(jù)綁定
-
以HttpServletRequest類型的使用為例署恍,演示默認(rèn)數(shù)據(jù)類型綁定的使用過程:
綁定POJO類型(針對多類型、多參數(shù)的請求)
- POJO類型的數(shù)據(jù)綁定蜻直,就是將所有關(guān)聯(lián)的請求參數(shù)封裝在一個POJO中盯质,然后再方法中直接使用該P(yáng)OJO作為形參來完成數(shù)據(jù)綁定
-
通過用戶注冊案例,演示POJO類型的數(shù)據(jù)綁定
-
解決請求參數(shù)中的中文亂碼問題(在web.xml中配置Spring提供的編碼過濾器來統(tǒng)一編碼)
綁定包裝POJO
-
通過訂單查詢案例概而,演示包裝POJO數(shù)據(jù)綁定的使用
-
注意事項
綁定數(shù)組-new
-
通過批量刪除用戶案例呼巷,演示綁定數(shù)組的操作使用
自定義數(shù)據(jù)綁定
- 有些數(shù)據(jù)類型無法直接進(jìn)行數(shù)據(jù)綁定,必須先經(jīng)過數(shù)據(jù)轉(zhuǎn)換赎瑰,如日期數(shù)據(jù)
-
對于特殊數(shù)據(jù)類型王悍,就要自定義轉(zhuǎn)換器(Converter)/格式化(Formatter)來進(jìn)行數(shù)據(jù)綁定
綁定集合(在包裝類中定義一個包含用戶信息類的集合,然后在接收方法中將參數(shù)類型定義為該包裝類的集合)
-
通過批量修改用戶案例餐曼,演示集合綁定的操作使用