springMVC ModelAndView 作用與功能解析

Spring mvc視圖機制

所有的web應用的mvc框架都有它定位視圖的方式。Spring提供了視圖解析器供你在瀏覽器中顯示模型數據,而不必被拘束在特定的視圖技術上。

Spring的控制器Controller會返回一個ModelAndView的實例。Spring根據ModelAndView實例中的View和Model把信息反饋給用戶。Spring中的視圖是以名字爲標識的,ViewResolver是通過名字來解析view的。Spring提供了多種視圖和視圖解析器。

A、ModelAndView

org.springframework.web.servlet.ModelAndView

public class ModelAndView extends Object

ModelAndView如其名稱所示,它代表了Spring Web MVC中呈現畫面時所使用的Model與View,由於Java一次只能返回一個物件,所以ModelAndView的作用封裝這兩個物件,以方便您一次返回Model與View這兩個物件。

構造方法

ModelAndView(String viewName)

Convenient constructor when there is no model data to expose.

最簡單的ModelAndView是隻有View的名稱,之後View名稱被View resolver,也就是org.springframework.web.servlet.View的實例解析,例如 InternalResourceView或JstlView等等。

ModelAndView(String viewName, Map model)

Creates new ModelAndView given a view name and a model.

如果您要返回呈現畫面時所需的Model資料,則可以使用Map來收集呈現View時所需的資料,然後在建構ModelAndView作爲建構時的參數。

ModelAndView(String viewName, String modelName, Object modelObject)

Convenient constructor to take a single model object.

返回單個model時使用。

B、ViewResolver(視圖解析器)

org.springframework.web.servlet.ViewResolver

public interface ViewResolver

現在我們有了view名稱,也有了顯示時需要的model資料,那麼我們如何顯示view了。這就需要用到ViewResolver,它提供了從視圖名稱到實際視圖的映射。

(例如我們得到的view名稱爲test,通過ViewResolver我們把它映射到/WEB-INF/jsp/test.jsp的資源上,當然也可以把test映射到test.pdf的資源上,這部分工作由ViewResolver來完成,但是具體如何顯示test.jsp或test.pdf,就需要View來實現了)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章