`
小嘴冰凉
  • 浏览: 457136 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring视图解析器和视图的理解

阅读更多
在视图解析器的继承关系中,从AbstractCachingViewResolver开发分成不同形式的解析器,ResourceBundleViewResolver,
UrlBasedViewResolver,XmlViewResolver。


今天看了下spring有关的源码,记录下关于ResourceBundleViewResolver,UrlBasedViewResolver和
解析器之间的不同。

如果用ResourceBundleViewResolver解析器,我们会定义一个或多个与它相关联的文件,默认为views.properties
文件,通过不同名字的文件可以进行国际化的配置。如果spring配置文件中定义了ResourceBundleViewResolver解析器,当controller返回
ModelAndView的时候,系统会根据当前所访问的地区把与ResourceBundleViewResolver相对应文件的内容映射成bean,与spring配置
文件中定义的其它bean一起放在spring的缓存map中,(key中.class之前的部分做为beanid,value作为map的值),所以如果我们把
views.properties中定义的内容放入spring的配置文件中,一样可以。
然后系统把ModelAndView中返回的试图名作为key从map中查询定义的view类,如果查询出,则根据views.properties中与view相对应的url查找出view模版。
如果查询不到,则继续用在spring中定义的其它视图解析器查询视图,这是它与UrlBasedViewResolver解析器最大的不同点,UrlBasedViewResolver,
下的子解析器如果在他们的缓存中查询不到视图,则会判断ModelAndView中提供的viewname与它的属性viewNames中的字符创是否相对应,如果对应则新生成一个view。
放入缓存中,如果不存在对应则通过spring配置文件中定义的其它视图解析器查询视图

在UrlBasedViewResolver视图解析器中定义了(viewNames可以在spring配置文件中配置)
prefix,suffix和viewNames三个字段,prefix和suffix是字符串类型,它们会与ModelAndView中返回的viewname一起组成请求视图(.jsp, .vm 等)的模版路径
(prefix + viewname + suffix),系统会根据这个路径查找到视图模版,将模版与model一起返回给浏览器(这里还有一些其它的工作,excel视图是需要自己继承的,等)。
而viewNames字段是一个字符串数组,它里面的字符串可以写成正则表达式的方式。viewNames是字符串数组

ResourceBundleViewResolver配置文件中定义的url与UrlBasedViewResolver中prefix + viewname + suffix意思是一样的。viewname 为ModelAndView中的视图名

  • 大小: 3.7 KB
  • 大小: 18 KB
  • 大小: 4.1 KB
分享到:
评论
1 楼 小嘴冰凉 2010-11-30  
如果UrlBasedViewResolver中没有定义viewNames,则无论是否是ModelAndView中返回的试图,都会创建一个与解析器自身相对应的视图,这样就会出错,这也是它与ResourceBundleViewResolver的不同点

相关推荐

    Spring MVC--5.视图和视图解析器

    在Spring MVC框架中,视图和视图解析器是实现MVC模式中“V”(View)部分的关键组件。它们负责将处理完的数据转化为用户可以理解的格式,并展示在浏览器上。视图解析器则是连接控制器与视图的桥梁,它负责根据返回的...

    Spring配置Freemarker视图解析器,配置多个视图解析器

    总的来说,Spring通过灵活的配置机制,允许开发者根据需求选择和配置多个视图解析器。这不仅提高了项目的可扩展性,还能够满足不同场景下的需求。在实际开发中,理解并熟练掌握这些配置方法,对于构建高效、稳定的...

    SpringMVC-5 视图和视图解析器

    在Spring MVC框架中,视图和视图解析器是核心组件,它们负责处理控制器返回的数据并将其呈现给用户。本文将深入探讨视图与视图解析器的工作原理、常用实现及自定义视图的实现方法,同时也会讲解重定向操作。 1. **...

    SpringMVC及视图解析器

    SpringMVC 及视图解析器 SpringMVC 是一个基于 Java ...SpringMVC 及视图解析器是 Spring 框架中的一部分,提供了一种灵活的方式来处理 Web 请求和响应。通过掌握相关的注解和配置,可以构建一个强大的 Web 应用程序。

    Spring MVC中InternalResourceViewResolver视图解析器的默认行为.docx

    在Spring MVC框架中,视图解析器扮演着至关重要的角色,它负责将控制器处理方法返回的逻辑视图名称转换为实际的物理视图资源。`InternalResourceViewResolver`是Spring MVC提供的一种内置的视图解析器,主要用于处理...

    Spring Boot应用配置常用相关视图解析器详解

    Spring Boot应用配置常用相关视图解析器详解是指在Spring Boot应用程序中配置和使用视图解析器的相关知识点,包括InternalResourceViewResolver和Thymeleaf视图解析器的配置和使用。开发者可以根据自己的需求选择...

    SpringMVC自定义多视图

    在实际开发中,我们还可以结合使用Spring的`@ResponseBody`和`@RestController`注解,直接将处理器方法的返回值序列化为JSON或其他格式,而无需通过视图解析器。这种方式特别适用于RESTful API的实现。 在Spring...

    springjpa 和 spring多视图配置实例

    在Spring MVC中,Freemarker可以作为视图解析器,将控制器返回的数据填充到模板中,生成最终的响应页面。 至于JSON(JavaScript Object Notation),它是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于...

    SpringBoot项目中的视图解析器问题(两种)

    本文将详细介绍如何在Spring Boot中配置和使用这两种视图解析器。 **一、JSP页面解析** 1. **添加依赖**:为了在Spring Boot中使用JSP,需要在`pom.xml`文件中添加以下依赖: - `javax.servlet-api`:Servlet API...

    Spring配置Freemarker视图解析器,前台页面全部使用freemarker渲染

    下面我们将深入探讨如何配置Spring以使用Freemarker作为视图解析器,以及如何在前端页面上全面使用Freemarker进行渲染。 首先,我们需要在Spring的配置文件中添加对Freemarker的支持。这通常涉及到以下几个步骤: ...

    velocity jsp多视图解析器整合

    本话题将详细讲解如何在Spring MVC框架中整合Velocity和JSP,实现多视图解析器的功能,从而根据需求返回不同的视图。 **1. Velocity模板引擎** Velocity是一个开源的Java模板引擎,它允许开发者将业务逻辑与展示...

    spring3 多视图集成

    1. **配置视图解析器**:在Spring的配置文件中,你需要为每种视图技术配置相应的视图解析器。例如,对于Velocity,你需要配置`VelocityViewResolver`,指定模板目录、后缀等属性。 ```xml <bean class="org.spring...

    Spring源代码解析

    此外,Spring MVC还提供了视图解析器、数据绑定、异常处理等功能。 在源代码分析过程中,理解Spring的模块化设计和组件间的交互至关重要。例如,`BeanPostProcessor`接口允许自定义bean初始化和销毁的逻辑,`...

    spring2 集成视图

    至此,我们已经介绍了如何在Spring2中集成视图,包括配置`DispatcherServlet`、视图解析器、创建Controller以及使用JSP、FreeMarker和Thymeleaf等不同视图技术。理解并熟练掌握这些知识点,能够帮助开发者构建高效、...

    Spring_MVC_控制器方法返回值与视图的关系

    例如,控制器方法可以返回一个 ModelAndView 对象,其中包含名为 "index" 的视图和一个模型对象,该模型对象将被传递给视图。 void 类型返回值 如果控制器方法返回 void 类型的返回值,那么 Spring MVC 将会根据 ...

    spring源码深入解析

    它通过DispatcherServlet处理请求,Controller处理业务逻辑,视图解析器负责渲染视图,实现了前后端分离。 6. **数据访问集成**:Spring提供了JDBC模板、ORM(Object-Relational Mapping)支持,如Hibernate、...

    spring-webmvc-5.0.9 jar包、源码和javadoc

    常见的视图解析器有InternalResourceViewResolver和BeanNameViewResolver等。 六、注解驱动开发 Spring 5.0.9中,注解驱动开发已经非常成熟,@RequestMapping、@GetMapping、@PostMapping等注解用于映射URL请求,@...

    Spring源码解析(高清版)

    5. Spring MVC:解释请求处理流程,以及视图解析器、拦截器等关键组件的工作原理。 6. Spring Boot:讨论Spring Boot的自动配置、起步依赖和运行时特性。 通过对这些知识点的深入学习,开发者不仅可以提升对Spring...

    Spring+Mvc手写基本源码+思维导图,快速理解spring+mvc原理

    5. **视图解析**:DispatcherServlet通过视图解析器(ViewResolver)根据Model数据和逻辑视图名(例如jsp页面)找到实际的视图资源。 6. **视图渲染**:视图资源(如JSP)被渲染,并将Model中的数据展示给用户。 7...

    Spring MVC中基于JSX的视图的服务器端渲染.zip

    配置Spring MVC以使用一个支持JSX的视图解析器,如`Thymeleaf`或自定义的解析器。如果你选择Thymeleaf,可以添加Thymeleaf的依赖,并在`application.properties`中配置模板目录。对于自定义解析器,你需要实现`...

Global site tag (gtag.js) - Google Analytics