1. 程式人生 > >7.SpringMVC 配置式開發-ModelAndView和視圖解析器

7.SpringMVC 配置式開發-ModelAndView和視圖解析器

ash ati and undle pro val 添加數據 圖解 edi

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和視圖解析器