1. 程式人生 > >springMVC ModelAndView 作用與功能解析

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來實現了)。