7.SpringMVC 配置式開發-ModelAndView和視圖解析器
ModelAndView
1.Model(模型)
1.model的本質就是HashMap,向模型中添加數據,就是往HashMap中去添加數據
2.HashMap 是一個單向查找數組,單向鏈表數組
3.LinkedHashMap,本質是一個HashMap,但其將Entry進行了擴展,變成雙向的了
2.View(視圖)
ModelAndView 內部通過 setViewName() 指定視圖名稱
這個視圖名稱對應一個視圖對象,這個視圖對象會被封裝在ModelAndView中,傳給視圖解析器來解析
視圖解析器ViewResolver
試圖解析器ViewResolver接口負責將處理結果生成View視圖,常用的實現類有四種
(1)InternalResourceViewResolver 視圖解析器(默認)
該視圖解析器用於完成對當前web應用內部資源的封裝與跳轉(可以選擇是否拼接web資源名稱)
對於內部資源的定義,也只能定義一種格式的資源:存放在同一目錄的同一文件類型的資源文件
(2)BeanNameViewReolver 視圖解析器(可以轉向外部資源)
可以定義多個View 視圖bean,讓處理器中的ModelAndView 通過這些Bean的id的引用 來完成想View中封裝資源的跳轉
1 <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/> 2 3 <!-- 定義多個 View 視圖bean,讓處理器中 的 ModelAndView 通過對這些 Bean 的 id 的引用 來完成向 View 中封裝資源的跳轉 --> 4 <!-- 定義一個外部資源 View 對象 --> 5 <bean id="taobao" class="org.springframework.web.servlet.view.RedirectView"> 6 <property name="url" value="http://www.taobao.com"/> 7 </bean> 8 9 <!-- 定義一個外部資源 View 對象 --> 10 <bean id="baidu" class="org.springframework.web.servlet.view.RedirectView"> 11 <property name="url" value="http://www.baidu.com"/> 12 </bean> 13 14 <!-- 定義一個內部資源 View 對象 --> 15 <bean id="myInternalView" class="org.springframework.web.servlet.view.JstlView"> 16 <property name="url" value="/WEB-INF/jsp/hello.jsp"/> 17 </bean> 18 19 20 <bean id="/hello.do" class="com.springmvc.handlers.MyController"/> 21 22 23 24 </beans>
3.XmlViewResolver視圖解析器 和 ResourceBundleViewResolver視圖解析器
當需要定義的View視圖對象很多時,就是使springmvc.xml文件變得龐大,
所以可以將這些View視圖對象專門抽取出來,單獨定義一個xml或resource文件,統一進行管理
視圖解析器的優先級
視圖解析器有一個order屬性,專門用於設置多個視圖解析器的優先級。數字越小,優先級越高,數字相同,先註冊的優先級高
1 <bean class="org.springframework.web.servlet.view.XmlViewResolver"> 2 <property name="location" value="classpath:myViews.xml"></property> 3 <property name="order" value="1"></property> 4 </bean>
7.SpringMVC 配置式開發-ModelAndView和視圖解析器