无论Controller是何种返回类型最终都会被封装成一个ModelAndView对象,然后交由ViewResolver解析成Vie对象。该接口定义非常简单,根据传入视图的逻辑名(var1)和相应的国际化信息返回View对象。

public interface ViewResolver {
View resolveViewName(String var1, Locale var2) throws Exception;
}

  大部分接口的实现类是继承AbstractCachingViewResolver来简介实现该接口,AbstractCachingViewResolver提供了缓存视图对象的功能,也可以在配置视图解析器的时候禁用缓存来提高开发效率。

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
<property name="cache" value="false"/> </bean>

  SpringMVC提供的ViewResolver可以分为两大类:面向单一视图和面向多视图类型。所谓面向单一视图指可通过视图模板的位置来定位视图,面向多视图需要额外的配置文件来确定视图。

面向单一视图

  所有面向单一视图的视图解析器都直接或间接的继承自UrlBasedViewResolver,他们所具有的共同特点是只需要配置逻辑视图的位置,视图解析器就会利用视图模板和ModelAndView中的数据构建出View实例并返回。比如我们最常用的InternalResourceViewResolver,它负责从指定的位置找到JSP文件用于创建View模型。所以在配置这些视图的时候非常简单,只需要配上prefix和suffix即可。

面向多视图

  国际化视图解析器是面向多视图的视图解析器中的代表,他需要额外配置国际化配置文件。

  如果在SpringMVC容器中配置了多个视图解析器会怎么样呢?他会按照某种顺序遍历所有的ViewResolver知道有一个合适的视图解析器能够返回一个View对象,这种模型被称为ViewResolver查找序列。如果不指定的话该序列是配置顺序,作为Spring家族中的一员,SpringMVC中的ViewResolver同样实现了Order接口,允许我们指定ViewResolver在Chain上的顺序,如下所示。

  但下面这种配置是有一定危险的,因为面向单一视图的视图解析器在解析失败的时候不会返回null然后用下一个视图解析器,返回null会造成404错误。所以在配置了多个视图解析器的情况下应该吧面向多视图的视图解析的order在前面。

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
<property name="cache" value="false"/>
<property name="order" value="1"/> </bean>

springmvc组件--ViewResolver的更多相关文章

  1. 腾讯公司数据分析岗位的hadoop工作 线性回归 k-means算法 朴素贝叶斯算法 SpringMVC组件 某公司的广告投放系统 KNN算法 社交网络模型 SpringMVC注解方式

    腾讯公司数据分析岗位的hadoop工作 线性回归 k-means算法 朴素贝叶斯算法 SpringMVC组件 某公司的广告投放系统 KNN算法 社交网络模型 SpringMVC注解方式 某移动公司实时 ...

  2. SpringMVC组件解析

    SpringMVC组件解析 1. 前端控制器:DispatcherServlet 用户请求到达前端控制器,它就相当于 MVC 模式中的 C,DispatcherServlet 是整个流程控制的中心,由 ...

  3. springmvc组件组成以及springmvc的执行过程

    springmvc三大组件 处理器映射器:用户请求路径到Controller方法的映射 处理器适配器:根据handler(controlelr类)的开发方式(注解开发/其他开发) 方式的不同区寻找不同 ...

  4. SpringMVC组件配置

    web.xml . springmvc-servlet.xml 配置SpringMVC四大组件. web.xml 配置前端控制器:前端控制器就是个servlet <!-- 配置前端控制器 --& ...

  5. springmvc的简单介绍以及springmvc组件的介绍

    Spring web mvc框架 什么是springmvc Springmvc是spring框架的一个模块,spring和springmvc无需中间整合层整合 Springmvc是一个基于mvc的we ...

  6. springMVC课程笔记(二)springMVC组件配置

    1.springMVC的DispatcherServlet前段控制器配置,如下图所示在web.xml中配置如下内容: 2.在spring配置文件中,配置处理器适配器HandlerAdapter和映射器 ...

  7. Sprign-mvc系列之Spring快速入门 什么是sprign-mvc spring-mvc的作用及其基本使用+组件解析+注解解析

    Spring-mvc 什么是SpringMvc SpringMvc是一种基于java的实现Mvc设计模式的请求驱动类型的轻量级web框架,属于SpringFrameWork的后续产品,已经融合在Spr ...

  8. 精尽Spring MVC源码分析 - ViewResolver 组件

    该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2. ...

  9. 13.SpringMVC和Spring集成(一) && 14.SpringMVC和Spring集成(二)

    1.概念 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,Spring致力于J2EE应用的各层的解决方案,Spring是企业应用开发的“一站式”选择,并贯 ...

随机推荐

  1. mapper代理查询

    对于查询来说,要根据具体的业务,来指定mapper接口中方法的返回值类型1:如果只返回一条记录,mapper接口中方法的返回值类型应指定为pojo类型或其他简单类型,这样mybatis内部就会使用se ...

  2. css 性能优化小结

    1.能用css不用js 1.鼠标悬浮展示              2.自定义radio.checkbox的样式 3.巧用css伪类 当input获取焦点时候,把右边的按钮改变样式 检测用户输入:如果 ...

  3. IO学习二(节点流)

    1.流的分类 按照数据流向的不同:输入流和输出流 按照处理数据的单位不同:字节流((非文本文件)视频.音频.图像).字符流(文本文件) 按照角色的不同:节点流和处理流 2.IO体系 抽象基类 节点流 ...

  4. BZOJ4805: 欧拉函数求和(杜教筛)

    4805: 欧拉函数求和 Time Limit: 15 Sec  Memory Limit: 256 MBSubmit: 614  Solved: 342[Submit][Status][Discus ...

  5. MongoDB 3.0 WT引擎参考配置文件

    单实例: systemLog: destination: file ###日志存储位置 path: /data/mongodb/log/mongod.log logAppend: true stora ...

  6. GIS开发之计算四参数,七参数

    一.四参数 想要通过控制点计算四参数,首先需要知道四参数的相关原理,推荐这篇文章: http://www.docin.com/p-1197326043.html 根据上面的计算公式,使用最小二乘法计算 ...

  7. Angular的12个经典问题,看看你能答对几个?(文末附带Angular测试)

    Angular作为目前最为流行的前端框架,受到了前端开发者的普遍欢迎.不论是初学Angular的新手,还是有一定Angular开发经验的开发者,了解本文中的12个经典面试问题,都将会是一个深入了解和学 ...

  8. RPC框架学习总结

    1.RPC是一种技术框架的称呼,不是某种具体协议,不局限于某种协议,RPC顾名思义就是远程过程调用,其核心思想是,RPC客户端调用远程服务器上的接口完成过程调用,远程服务器把结果返回. 2.RPC的最 ...

  9. MFC 单文档添加按钮

    VS 单文档 添加按钮 今天做项目需要在单文档中创建按钮来响应函数,即点击按钮,调用某函数,特此记录. 1. 在XXXView中添加CButton变量,例如 CButton start; 2. 下来就 ...

  10. springboot 学习之路 2(注解介绍)

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...