本篇文章會有大量的類結構圖來說明關係
1,數據模型用於存儲業務處理之後,返回給用戶的數據。
大致的流程如下:
1,控制器將數據裝載數據模型中
2,將視圖名稱轉發給視圖解析器
3,視圖解析器解析視圖名,得到最終的視圖
4,將數據模型的數據渲染到視圖中,最終呈現視圖
數據模型的結構
所以,你經常會看到我們在程序中寫Model或者ModelMap,其實最終本質使用都是BindingAwareModelMap,來調試驗證:
2,視圖
視圖的分類:
視圖分為邏輯視圖和非邏輯視圖
非邏輯視圖,不會經過視圖解析器定位視圖,而是直接將數據模型渲染即可,比如處理JSON的MappingJackson2JsonView
邏輯視圖,則會通過視圖解析器解析,並確認最終的視圖,比如處理jstl的InternalResourceView
我們來看視圖類的定義
View這個接口下面有很多的實現類,比如處理jstl的JstlView,處理Freemarker的FreeMarkerView,Json的
MappingJackson2JsonView,等等還有很多。
3,視圖解析器
視圖解析器的定義:
什麼時候用上視圖解析器:
向上述的非邏輯視圖MappingJackson2JsonView,就不需要配置視圖解析器,會最終將數據模型轉換為JSON數據,並響應給用戶。
而InternalResourceView,則需要配置視圖解析器,比如我們之前在 文章中提到的InternalResourceViewResolver
同樣,也會有很多對應的視圖解析器,比如FreeMarkerViewResolver
所以,到此為此,大家是否對SpringMVC的模型數據,視圖,視圖解析器三者的關係及結構有了比較清晰的認識?
閱讀更多 互聯網十年老兵 的文章