當前位置:
首頁 > 最新 > SpringMVC筆記(3):數據綁定

SpringMVC筆記(3):數據綁定

前言:

今天我們來學習SpringMVC的數據綁定,什麼是數據綁定?在後台業務方法中,直接獲取前端http請求中的參數。

首先來了解一下底層原理,http請求傳輸的參數都是String類型,但是Hanlder業務方法中的參數都是我們指定的數據類型,如int,Object等,所以需要處理參數的類型轉換。此項工作不需要我們開發人員去完成,SpringMVC的HandlerAdapter組件會在執行Handler業務方法之前,完成參數的綁定。

了解完大致理論,熟悉本公眾號風格的朋友們都知道,接下來我們就直接上代碼,實踐出真知。

代碼:

基本數據類型

以int為例,後台需要int類型的參數,直接在業務方法定義處添加int類型的形參即可,http請求參數名必須與形參名一致。

@ResponseBody註解直接返回字元串到前端,不需要返回jsp頁面。

測試,http請求不帶參數,直接報500錯誤。

錯誤原因:

可選的參數「id」不能轉為null,因為我們都知道,基本數據類型不能賦值null。

測試:參數類型為字元串。

400錯誤,錯誤原因:

String類型不能轉換為int類型。

正確使用:

包裝類

測試:不傳參數。

沒有報錯,直接列印null,因為包裝類可以賦值null。

測試:參數類型為字元串。

400錯誤,錯誤原因:

String類型不能轉換為Integer類型。

正確使用:

參數列表添加@RequestParam註解,可以對參數進行相關設置。

@RequestParam

value="id":將http請求中名為id的參數與形參進行映射。

required=false:id參數非必填,可省略。

defaultValue="1":若http請求中沒有id參數,默認值為1。

修改代碼:required=true,刪除defaultValue參數。

再次運行。

報錯,因為id為必填參數,此時前端沒有傳id參數,同時業務方法中id也沒有默認值,所以報錯。

若前端傳id或者id有dafaultValue,程序不會報錯。

數組

POJO

1.創建User類。

2.JSP頁面input標籤的name值與實體類的屬性名對應。

3.業務方法。

4.運行。

處理@ResponseBody中文亂碼:

在springmvc.xml中配置消息轉換器。

POJO級聯關係

1.創建Address類。

2.修改User類,添加address屬性。

3.修改JSP,添加address信息,為input標籤的name設置屬性級聯,即先關聯User的address屬性,再級聯address的id和name。

4.運行。

List

SpringMVC不支持List類型的直接轉換,需要包裝成Object。

List的自定義包裝類:

業務方法:

創建addList.jsp,同時添加三個用戶信息,input的name指向自定義包裝類UserList中的users屬性,級聯到name和age,同時以下標區分集合中不同的對象。

執行代碼。

Set

和List一樣,需要封裝自定義包裝類,將Set集合作為屬性。不同的是,使用Set集合,需要在包裝類構造函數中,為Set添加初始化對象。

業務方法:

JSP,用法與List一樣,input標籤的name指向Set內對象的屬性值,通過下標區分不同的對象。

執行代碼。

Map

自定義包裝類:

業務方法,遍歷Map集合的key值,通過key值獲取value。

JSP,與List和Set不同的是,不能通過下標區分不同的對象,改為通過key值區分。

執行代碼。

JSON

JSP:Ajax請求後台業務方法,並將json格式的參數傳給後台。

注意

1.json數據必須用JSON.stringify()方法轉換成字元串。

2.contentType不能省略。

業務方法:

@RequestBody註解

讀取http請求參數,通過SpringMVC提供的HttpMessageConverter介面將讀取的參數轉為json,xml格式的數據,綁定到業務方法的形參。

@ResponseBody註解

將業務方法返回的對象,通過HttpMessageConverter介面轉為指定格式的數據,json,xml等,響應給客戶端。

我們使用的是阿里的fastjson來取代Spring默認的Jackson進行數據綁定。

fastjson的優勢在於如果屬性為空就不會將其轉化為json,數據會簡潔很多。

如何使用fastjson

1.pom.xml引入fastjson依賴jar包。

2.springmvc.xml中配置fastjson。

運行代碼。

前端傳給後台的數據age=22,後台對age進行修改,並將修改的結果返回給前端,我們在前端頁面看到age=32,修改成功。

源碼:

鏈接:https://pan.baidu.com/s/1nwLjpJb

密碼:i1rw

下一篇:SpringMVC筆記(4):解析模型數據

專業 熱愛 專註

致力於最高效的Java學習

Java大聯盟


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 前端開發隨筆 的精彩文章:

Hibernate配置文件詳解-1

TAG:前端開發隨筆 |