SpringMVC学习笔记 视图解析器

时间:2022-10-24 20:41:55

视图解析器ViewResolver接口负责将处理结果生成View视图。常用的实现类有四种。

1.InternalResourceViewResolver视图解析器

该视图解析器用于应用的内部内部资源的封装与跳转。而对于内部查找规则是将逻辑视图名称配置为前缀与后缀的方式,即前缀 + 视图名称 + 后缀。

该视图解析器将处理器方法返回的模型属性放入request中,并将请求转发到目标URL。

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/">
<property name="suffix" value=".jsp" />
</bean>
2.BeanNameViewResolver视图解析器

InternalResourceViewResolver视图解析器存在两个问题,使用极其不灵活,只可以完成将内部资源封装完成后跳转。但无法转向外部资源,如外部网页。

对于内部资源定义,也只定义一种格式的资源:对一目录下的同一种类型的文件。

而BeanNameViewReslolver视图解析器,可以在xml配置中,定义多个内部资源或外部资源的view视图,处理器方法中ModelAndView的视图名称映射到视图解析器bean的Id属性值完成资源的封装与跳转

<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
<bean id="baidu" class="org.springframework.web.servlet.view.RedirectView">
<property name="url" value="https://www.baidu.com"/>
</bean>
<bean id="welcome" class="org.springframework.web.servlet.view.JstlView">
<property name="url" value="/WEB-INF/welcome.jsp"/>
</bean>
3.XmlViewReslover视图解析器

当需要定义很多视图解析器时,SpringMVC的xml配置难免有些臃肿,使用XmlViewReslover可以将视图资源注册到另一个xml配置里,该xml需要Spring配置文件中的bean约束

<bean class="org.springframework.web.servlet.view.XmlViewResolver" >
<property name="location" value="classpath:views.xml"/>
</bean>
4.ResourceBundleViewResolver视图解析器

对于veiw视图对象的注册不仅可以在xml中配置,也可以在properties文件中配置,此时应该使用ResourceBoundleViewResolver解析器。

<bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver" >
<property name="basename" value="views"/>
</bean>

格式要求:

 资源名称.(class)=封装资源的View全限定性类名

资源名称.url=资源路径

示例

jsonView.(class)=org.springframework.web.servlet.view.json.MappingJackson2JsonView
baidu.(class)=org.springframework.web.servlet.view.RedirectView
baidu.url=https://www.baidu.com