在前面說Spring MVC請求流程的時候瞳浦,提到需要將數(shù)據(jù)模型填充到對應的視圖中喷斋,并且匹配到特定的視圖需要由視圖解析器來解析和渲染視圖培漏,然后以view的形式返回到客戶端兑巾,呈現(xiàn)出用戶希望看到的形式损姜。
接著看一下View Resolver和View的定義:
當給resolveViewName方法傳遞一個視圖名和Locale對象時饰剥,他會返回一個View的實例。
View接口接收模型以及servlet的request和response對象摧阅,并將輸出結(jié)果渲染到response中汰蓉。
InternalResourceViewer類的定義:
下面是JstlView類,如果我們在JSP使用了JSTL標簽棒卷,那么InternalResourceViewResolver會將視圖名解析為JstlView形式的JSP文件顾孽,從而將JSTL本地化和資源bundle變量暴露給JSTL格式化和信息標簽。JtslView的具體定義:
配置InternalResourceViewResolver的方式
(1)Java代碼實現(xiàn)
(2)XML形式實現(xiàn)
ResourceBoundleMessageSource類
它會從一個屬性文件中加載信息比规,這個屬性文件的名稱是根據(jù)基礎名稱來的若厚。它會試圖在根路徑的屬性文件中解析信息,這些屬性文件的名稱是根據(jù)這個基礎名稱衍生得到的蜒什。
ReloadableResourceBoundleMessageSource類
該類可以重新加載信息屬性测秸,不必重新編譯或者重啟應用。
兩者的區(qū)別在于basename屬性設置為在應用的外部查找,ResourceBoundleMessageSource是在類路勁下查找霎冯。basename屬性可以設置為在類路徑下(以classpath:為前綴)铃拇,或者文件系統(tǒng)中(以file:為前綴)或者在Web應用的根路徑下查找屬性。