视图解析器
1.什么是视图解析器
视图解析器是用来接收经过处理器适配器调用具体的controller后生成的逻辑视图的,它接受 DispatcherServlet传过来的ModelAndView,然后将ModelAndView数据填充到相应的视图中,然后返回一个带有数据的视图再传给DispatcherServlet.
2.视图解析器的处理流程
1、调用目标方法,SpringMVC将目标方法返回的String、View、ModelMap或是ModelAndView都转换为一个ModelAndView对象;
2、然后通过视图解析器(ViewResolver)对ModelAndView对象中的View对象进行解析,将该逻辑视图View对象解析为一个物理视图View对象;
3、最后调用物理视图View对象的render()方法进行视图渲染,得到响应结果。
3.视图解析器返回类型
视图解析器不仅可以返回物理视图,还可以返回一个模板。
它会解析逻辑视图配置,返回一种Freemarker模板或者thymelea模板,该模板负责将数据模型中的数据合并到模板中,从而生成标准的输出,可以生成各种文本,包括HTML,XML,java源码等。
4.视图解析器的配置
1.返回物理视图的配置
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp"></property>
<property name="suffix" value=".jsp"></property>
</bean>
2.返回模板的视图解析器的配置
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="prefix" value="fm_"></property>
<property name="suffix" value=".ftl"></property>
<property name="order" value="1"></property>
</bean>
<!--模板文件的路径以及其他配置-->
<bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/freemarker"></property>
</bean>
maven依赖
<dependency>
<!--在spring中使用Freemarker这个必不可少,否则报错-->
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.3.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>