ModelAndView
的构造方法有7个。但是它们都是相通的。这里使用无参构造函数来举例说明如何构造ModelAndView
实例。
ModelAnd360问答View类别就如其名称所示,是代表了MVCWeb程序中Model与View的对象,不过它只是方便您一次返回这两个对象的holder,Model与View两者仍是分离的概念。
最简单的ModelAndView是持有View的名称返回,之后View名称被viewresolver,也就是实作org.springframework.web.servlet.View接口的实例解析,例如InternalResourceView或JstlView等等:
电生钢铁品ModelAndView(StringviewName)
如果您要返回Model对象,则可以使用Map来收集这些Model对象,然后设定给ModelAndView,使用下面这个版本的ModelAndView:
ModelAndView(Stringview愿件者这领非次争初早显Name,Mapmodel)
Map对象中设定好key与value值,之后可以在视图中取出,如果您只是要返回一个Model对象,则可以使用下面这个ModelAndView版本:
ModelAndView(StringviewName,StringmodelName,ObjectmodelObject)
藉由modelName,您可以在视图中取出Model并显示。
ModelAndView类别提药南供实作View接口的对象来作View的参数:
ModelAndView(Viewview)
ModelAndView(Viewview,Mapmodel)
ModelAndView(V第胞口iewview,StringmodelName,ObjectmodelObject)
蒸一个例子是org.springframework.web.servlet.view.RedirectView,ModelAndView预设是使完们刻冷压杆的用forward来转发请求结果至视图,使用Redire房谁ctView的话,则会使右算什弦凯控区尽用redirect将请求重导龙族手至视图,例如:
…
publicModelAndViewhandleRequest(....)…{
....
returnnewModelAndView(n粮境情面样办祖采止剧步ewRedirectView(this.getViewPage()));
}
....
在这边,viewPage的地址是从服务器网页根目录开始指定,而不是Web应用程序的根目录,所以您的getViewPage()传回的地址必须像是/springapp/pages/index.htm这样的地址,其中springapp是您的Web应用程序目录。
使用forward的话,网址列上并不会出现被转发的目标地址临学散,而且forward是在Web应用程序之内进行,可以访问Web应用程序的隐藏目录,像是WEB-INF,然而forward只能在Web应用程序中进行,不能指定至其它的Web应用程序地址。
对练航袁井 使用redirect的话,是要求客户端浏览器重新发出一个指定的请求地址,因此网址列上会出现被重导的目录地址,重导的请求是由浏览器发出,所以不能访问Web应用程序中的隐藏目录,像是WEB-INF,然而重导是重新要求一个网页,所以可以指定至其它的Web应用程序地址。
DispatcherServlet会根据传回的ModelAndView来解析View名称沉合车见战,并处理给予的Model。View名称的解析是委托给实作org.springframework.web.servlet.ViewResolver接口的实例,ViewResolver接口定义如下:
publicinterfaceViewResolver{
publicvie适审wresolveViewName(String,Localelocale)throwsSer境井vletException;
}
标签:ModelAnd,推层,美妈