不论控制器返回一个String,ModelAndView,View都会转换为ModelAndView对象,由视图解析器解析视图,然后,进行页面的跳转。
控制器处理方法----》ModelAndView对象----》视图解析器解析视图-----》页面的跳转
意义:视图解析器这样实现 MVC 的充分解耦(model controller 和view)
ModelAndView 对象:包含逻辑名和模型对象视图
视图解析器(ViewResolver):解析后的得到最终的视图对象(View), 对于最终究竟采取何种视图对象对模型数据进行渲染,处理器并不关心,
处理器工作重点聚焦在生产模型数据的工作上,从而实现 MVC 的充分解耦。
特点:
l) 视图解析器的作用比较单一:将逻辑视图解析为一个具体的视图对象。
2) 所有的视图解析器都必须实现 ViewResolver 接口。
常用视图解析器实现类
InternalResourceViewResolver:JSP 是最常见的视图技术,可以使用 InternalResourceViewResolve作为视图解析器
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- /WEB-INF/page/success.jsp
prefix前缀
suffix后缀
那么返回值只需要写success
-->
<property name="prefix" value="/WEB-INF/page/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
JstlView(是InternalResourceViewResolver的子类):若项目中使用了JSTL,则SpringMVC 会自动把视图由InternalResourceView转为 JstlView
注:使用JstlView需要添加两个包
JSTL标签库 全称是指 JSP Standard Tag Library JSP标准标签库。是一个不断完善的开放源代码的JSP标签库。
标签库则是为了替换代码脚本。这样使得整个jsp页面变得更佳简洁。
taglibs-standard-impl-1.2.1.jar
taglibs-standard-spec-1.2.1.jar
视图:视图的作用是渲染模型数据,将模型里的数据以某种形式呈现给客户。
为了实现视图模型和具体实现技术的解耦,Spring 在 org.springframework.web.servlet 包中定义了一个高度抽象的 View 接口: