006-SpringMVC-理清數據模型、視圖、視圖解析器的脈絡

本篇文章會有大量的類結構圖來說明關係

1,數據模型用於存儲業務處理之後,返回給用戶的數據。

大致的流程如下:

1,控制器將數據裝載數據模型中

2,將視圖名稱轉發給視圖解析器

3,視圖解析器解析視圖名,得到最終的視圖

4,將數據模型的數據渲染到視圖中,最終呈現視圖

數據模型的結構

006-SpringMVC-理清數據模型、視圖、視圖解析器的脈絡

所以,你經常會看到我們在程序中寫Model或者ModelMap,其實最終本質使用都是BindingAwareModelMap,來調試驗證:

006-SpringMVC-理清數據模型、視圖、視圖解析器的脈絡

2,視圖

視圖的分類:

視圖分為邏輯視圖和非邏輯視圖

非邏輯視圖,不會經過視圖解析器定位視圖,而是直接將數據模型渲染即可,比如處理JSON的MappingJackson2JsonView

邏輯視圖,則會通過視圖解析器解析,並確認最終的視圖,比如處理jstl的InternalResourceView

我們來看視圖類的定義

006-SpringMVC-理清數據模型、視圖、視圖解析器的脈絡

View這個接口下面有很多的實現類,比如處理jstl的JstlView,處理Freemarker的FreeMarkerView,Json的

MappingJackson2JsonView,等等還有很多。

006-SpringMVC-理清數據模型、視圖、視圖解析器的脈絡

006-SpringMVC-理清數據模型、視圖、視圖解析器的脈絡

006-SpringMVC-理清數據模型、視圖、視圖解析器的脈絡

3,視圖解析器

視圖解析器的定義:

006-SpringMVC-理清數據模型、視圖、視圖解析器的脈絡

什麼時候用上視圖解析器:

向上述的非邏輯視圖MappingJackson2JsonView,就不需要配置視圖解析器,會最終將數據模型轉換為JSON數據,並響應給用戶。

而InternalResourceView,則需要配置視圖解析器,比如我們之前在 文章中提到的InternalResourceViewResolver

006-SpringMVC-理清數據模型、視圖、視圖解析器的脈絡

同樣,也會有很多對應的視圖解析器,比如FreeMarkerViewResolver

006-SpringMVC-理清數據模型、視圖、視圖解析器的脈絡

所以,到此為此,大家是否對SpringMVC的模型數據,視圖,視圖解析器三者的關係及結構有了比較清晰的認識?


分享到:


相關文章: