虽然我们在之前的示例中一直都是使用一个InternalResourceViewResolver进行视图查找,但这并不意味着每个基于
Spring MVC的Web应用程序只能使用一个ViewResolver。实际上,Dispatcher-
Servlet不但可以接受多个HandlerMapping以处理Web请求到具体Handler的映射,也可以接受多个ViewResolver以处
理视图的查找。
DispatcherServlet初始化时,将根据类型扫描自己的WebApplicationContext中定义的
ViewResolver。如果查找到存在多个ViewResolver的定义,DispatcherServlet将根据这些ViewResolver
的优先级进行排序,然后当需要根据逻辑视图名查找具体的View实例的时候,将按照排序后的顺序遍历这些ViewResolver,只要期间任何一个
ViewResolver返回非空的View实例,当前查找即告结束。如果DispatcherServlet没能在当前的
WebApplicationContext中找到任何的ViewResolver定义,它将使用
InternalResourceViewResolver作为默认的ViewResolver使用。
ViewResolver的优先级的指定使用Ordered接口作为标准,这已经成为Spring框架内设定优先级方式的惯例了。假设我们希望主要
使用ResourceBundleViewResolver进行逻辑视图名到具体View实例的查找,如果没能找到,再寻求
InternalResourceViewResolver的帮助。我们可以在Dispatcher-
Servlet的WebApplicationContext中添加如下配置内容:
<bean id="resourceBundleViewResolver"
class="org.springframework.Web.servlet.view.
ResourceBundleViewResolver">
<property name="order" value="1"></property>
</bean>
<bean id="viewResolver"
class="org.springframework.Web.servlet.view.
InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
相应ViewResolver的bean定义对应的id或者name属性值是任意
的,DispatcherServlet将按照类型来获取ViewResolver。如果没有为某个ViewResolver指定order值的话,默认
值为Integer.MAX_ VALUE,对应的是最低优先级。
如果为DispatcherServlet指定多个ViewResolver的话,不要给予
InternalResour-
ceViewResolver以及其他UrlBasedViewResolver子类过高的优先级,因为这些ViewResolver即使找不到相应的视
图,也不会返回null以给我们轮询下一个ViewResolver的机会,这样,我们所指定的其他ViewResolver实际上就形同虚设。合理的处
理方式是,给予ResourceBundleView-
Resolver或者XmlViewResolver这种能够通过返回null以表明无法找到相应视图的ViewResolver较高的优先级,而只是将
InternalResourceViewResolver(或者其他类似行为的ViewResolver)添加为最低优先级ViewResolver,
以作为DispatcherServlet的后备查找对象。
分享到:
相关推荐
下面小编就为大家带来一篇springmvc fastjson 反序列化时间格式化方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
springmvc中结构urlmapping和ViewResolver的小例子。
springmvc是常用的一种框架,学习springmvc非常重要,故需要良好教程资料
springmvc 笔记
springmvc基础 包含代码+知识点+详细解释 1. 什么是springmvc? 2. springmvc框架原理 前端控制器、处理器映射器、处理器适配器、视图解析器 3. springmvc入门程序 目的:对前端控制器、处理器映射器、处理器...
SpringMVC笔记.pdf
传智 springmvc mybatis 燕青 笔记 教案 springmvc部分
基于springmvc实现分页查询基于springmvc实现分页查询
springMvc源码分析springMvc源码分析springMvc源码分析springMvc源码分析springMvc源码分析springMvc源码分析
SpringMVC 实例
开发步骤①导入SpringMVC相关坐标②配置SpringMVC核心控制器DispathcerServlet③创建Controller类和视图页面④使用注解配置Controller类中业务方法的映射地址⑤配置SpringMVC核心文件 spring-mvc.xml⑥客户端发起...
springmvc 环境搭建 demo springmvc 环境搭建 demo springmvc 环境搭建 demo springmvc 环境搭建 demo springmvc 环境搭建 demo springmvc 环境搭建 demo springmvc 环境搭建 demo springmvc 环境搭建 demo ...
这是一个简单的springmvc连接数据库的,在xml文件中配置数据库连接,适合初学springmvc,简单易懂
springMVC集成lucene完整代码
springmvc带进度条上传源码
springMvc整合hibernate Demo
SpringMVC例子SpringMVC例子SpringMVC例子SpringMVC例子SpringMVC例子SpringMVC例子SpringMVC例子SpringMVC例子SpringMVC例子SpringMVC例子SpringMVC例子SpringMVC例子SpringMVC例子SpringMVC例子SpringMVC例子...
SpringMvc
SpringMVC+MyBatic demo Service端 后续上传客户端
springmvc4简单例子,springmvc例子,适合学习。。。。。。