在application.xml中配置支持ModelAndView,配置方式有两种。html
<bean id="ViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <!-- 视图文件的前缀 --> <property name="suffix" value=".jsp"></property> <!-- 视图文件的后缀名 --> <!-- view是用什么显示,这里是jsp,还能够用velocity之类的 --> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> </bean>
<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"></bean>
这种方式须要在beans中添加xmlns:p="http://www.springframework.org/schema/p"的支持。java
ModelAndView的构造方法有如下几种。
web
ModelAndView() ModelAndView(View view) ModelAndView(String viewName, Map<String, ?> model) ModelAndView(View view, Map<String, ?> model) ModelAndView(String viewName, String modelName, Object modelObject) ModelAndView(View view, String modelName, Object modelObject)
ModelAndView预设是使用forward来转发请求结果给视图的,使用RedirectView会致使将请求从新导向视图。spring
new ModelAndView(new RedirectView(this.getViewPage()));
viewPage的路径是从根目录算起,而不是web-inf算起,当指定viewName必须相对与根目录的路径。app
DispatcherServlet会根据传回的ModelAndView来解析View名称,并处理给予的Model。View名称的解析是委托给实做org.springframework.web.servlet.ViewResolver接口的实例,ViewResolver接口定义以下:jsp
public interface ViewResolver { public view resolveViewName(String, Locale locale) throws ServletException; }
ViewResolver的一个实例是InternalResourceViewResolver,名称解析完以后,实际的View绘制与Model转换处理是交给实做org.springframework.web.servlet.View的实例,View接口以下:oop
public interface View { public void render(Map model, HttpServletResquest resquest, HttpServletResponse response) throws ServletException, IOException; }
View的实做以前用过org.springframework.web.servlet.view.InternalResourceView,另外也还有JstlView、TilesView、VelocityView等等的实做,分别进行不一样的表现展处理。this
http://itroop.iteye.com/blog/263845
spa