springMVC框架的引數繫結之資料型別轉換

2021-09-11 19:55:35 字數 1864 閱讀 5727

夥伴們注意了!

各位小夥伴

今天我們分享的是

springmvc 的資料型別轉換

想看這部分的內容

咱們開始吧!

springmvc的引數繫結

先來一起看下 springmvc 的流程圖,在 handleradapter (處理器介面卡)在執行 handler 之前會進行 springmvc 的引數繫結

引數繫結:

需要經過三個步驟:資料轉化,資料格式化及資料校驗.(請忽略上面的那個框框)

遵循 http 協議的 servletreqeust 傳輸的引數都是 string 型別,但是我們在控制層元件得到的引數都是我們制定或者我們需要的型別,比如  int,double,object 

在這個過程中,springmvc 將 serlvetrequest 物件及目標方法傳給 webdatabindingfactory 建立乙個 databinder 物件

如圖: 

databinder 物件會呼叫conversionservice 進行資料型別轉換和資料格式化工作,然後呼叫 validator 元件進行資料的合法性校驗.

理論大致了解了,現在咱們們來動手製作乙個資料型別的轉換器.畢竟實踐出真知嘛!

自定義資料型別轉化器

需求:前台輸入乙個類似於 username-loginname-***-age 型別的值,handler 方法用 user 物件接收

前端頁面**:

controller 控制器**:

通過檢視源**確認,springmvc 預設沒有提供類似的格式轉換器.我就不給大家演示怎麼檢視源**了.

但是 springmvc 支援我們通過自定義轉換器來實現一些特殊的引數轉化,現在我們就來動手寫一下資料型別轉換器.

編寫乙個自定義轉換器 實現 convert 介面.

註冊自定義型別轉化器 

發布專案測試一下,這是資料輸入頁面.

前端頁面沒什麼效果,我們看一下控制台獲取 username 屬性,證明我們的邏輯跑通了,資料型別轉化完成.

現在利用斷點檢視源**:

路徑: dispatcherservlet.doservice -> handleradapter -> webbindinginitialize-> conversionservice/validator

紅框框住的就是我們的自定製資料型別轉換器了

自定義資料型別轉化器二

我們再來做乙個轉換器.

需求: 

使用者資訊需要錄入生日

編寫乙個輸入使用者生日的頁面.

controller 控制器**

此時,我們輸入任何乙個日期格式的時候 ,handler 方法都無法將 string 型別的引數轉換為 date 型別,這個時候我們可以自定義乙個型別轉換器去轉換,輕車熟路.

編寫乙個時間自定義轉換器 實現 convert 介面.

註冊自定義型別轉化器

發布專案測試一下:

控制台成功獲取了使用者的生日資訊

注意:

對於這種常見的時間型別轉化, springmvc 提供了註解

比如:時間型別,數值型別

現在我們來驗證springmvc自帶的資料型別轉換器.通過註解的方式進行設定.

把之前的配置資訊注釋掉

同樣的發布專案進行測試,我們的控制台還是接受到了使用者的生日資訊

怎麼樣?我寫的還算清楚吧!

小夥伴們快來試一下

拜拜了

web框架之springmvc引數繫結

在spring框架中,引數繫結指的是通過處理器方法的形參,接收到請求的url或者表單中的引數資料。分為 1.httpservletrequest 作用 通過request,獲取請求的引數資料。作用 通過response,執行響應。作用 通過session,獲取和儲存會話域資料。4.model mod...

Spring MVC框架的搭建

1.spring mvc spring為檢視層提供的基於mvc設計理念的 web框架,是目前最主流的mvc框架之一 spring3.0後全面超越struts2 spring mvc通過一套mvc註解,讓pojo成為處理請求的控制器,而無需實現任何介面 支援rest風格的url請求 採用了鬆散耦合可插...

SpringMVC框架的理解

1.spring為展現層提供的基於mvc設計理念的優秀的web框架,是目前最主流的mvc框架之一。2.spring3.0後全面超越struts2,成為最優秀的mvc框架 3.spring mvc通過一套mvc註解,讓pojo成為處理請求的控制器,而無須實現任何介面。4.支援rest風格的url請求。...