文档章节

Resolving View 2

AlphaGo
 AlphaGo
发布于 2016/03/16 01:12
字数 987
阅读 4
收藏 0

        forward:前缀

        也可以为那些最终会被UrlBasedViewResolver及其子类解析的视图名使用forward:前缀,这会为这个视图名的其他部分(被视为URL)创建一个InternalResourceView,它会最终执行RequestDispatcher.forward()方法。和redirect:前缀一样,如果一个拥有forward:前缀的视图名被注入到控制器中,控制器在处理响应结果方面也不会有什么特别。


        ContentNegotiatingViewResolver

        ContentNegotiatingViewResolver本身并不会解析视图,但它会委托其他视图解析器(可在bean属性ViewResolvers中配置)去查找和客户端要求的呈现结果相似的视图。这有两种策略:

  1. 为每个资源使用不同的URI,特别是使用不同的文件后缀。如:http://www.example.com/users/fred.pdf请求一个pdf结果,而http://www.example.com/users/fred.xml请求一个XML结果。

  2. 使用相同的URI来定位资源,但是设置Accept HTTP请求头去列出它能理解的媒体类型。如:一个Accept Header被设置为application/pdf的HTTP请求会去请求一个pdf结果。一个Accept Header被设置为text/xml的HTTP请求会去请求一个xml结果,这种策略被称为“内容协商”(ContentNegotiating)。使用Accept Header有一个问题,那就是在基于HTML的web浏览器中没法去设置它,例如在firefox中它被固定为:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

        所以,在开发基于浏览器的web应用时,更普遍采用的是第一种策略(distinct URI)。

        

        通过比较请求的media type和View(及与之联系的ViewResolvers)所支持的media type(通常称之为Content-Type),ContentNegotiatingViewResolver选择一个合适的View去处理请求——第一个匹配Content-Type的View将结果返回给客户端,如果在整个ViewResolver链中都没有匹配的,那就会去找DefaultViews属性中指定的。

        为了支持基于文件拓展名的视图解析,ContentNegotiatingViewResolver的mediaTypes属性指定了文件拓展名到media types的映射。


        Flash Attributes

        Flash Attributes提供了一种方式,让一个请求存储供另一个请求使用的属性,这在重定向的使用中非常普遍。Flash Attributes会被临时存储在从重定向可用之前到重定向之后的请求这个阶段,并会被马上移除。Spring MVC使用了两个主要的抽象类来支持Flash Attributes——FlashMap用来存放flash attributes,FlashMapManager用来存取、管理FlashMap实例。Spring MVC对Flash Attributes的支持是一直开启的,即便没有使用它,它永远都不会导致HTTP会话被创建。在每一个请求上,都有一个携带从之前的请求传递的attributes的“输入FlashMap”,和一个为随后的请求保存attributes的“输出FlashMap”。通过RequestContextUtils中的静态方法,从Spring MVC的任何地方都能访问这些FlashMap。


        被注解的Controller通常不需要直接使用FlashMap,而是由一个@RequestMapping方法接收一个RedirectAttributes类型的参数,并使用它为重定向添加flash attributes。通过RedirectAttributes添加的Flash Attributes会被自动传递给“输出FlashMap”。

        

        Flash Attributes的概念存在于很多其他的Web框架中,并被证明有时会存在并发问题。这是因为Flash Attributes会被保存直到下一个请求,然而这“下一个请求”不是预料中的接收者,而是一个同步请求,这种情况下,Flash Attributes会被过早的移除。为了减少这种可能性,RedirectView会自动用重定向目标URL的路径和查询参数为FlashMap实例“打邮戳”,默认的FlashMapManager在进来的请求中寻找“输入FlashMap”时,依次匹配“邮戳”信息。这种方式没有完全消除并发问题的可能性,但却大大减少了重定向URL中已经包含的信息,因此在重定向的场景中,Flash Attributes被广泛推荐使用。

                




© 著作权归作者所有

AlphaGo
粉丝 0
博文 9
码字总数 7769
作品 0
程序员
私信 提问
spring boot部署中一个斜杠引发的血案--org.thymeleaf.exceptions.TemplateInputException

异常现象:在本地打包部署完全没有问题,资源文件也都可以映射上,但是打包成jar包部署到服务器上时,就一直报异常,异常信息如下: [java] view plain copy 严重: Servlet.service() for s...

孙幼凌
2018/05/31
102
0
itext 选中pdf模板中checkbook时出现All the fonts must be embedded. This one isn't: ZapfDingbats

16:43:18,645 ERROR DefaultExceptionResolver:25 - com.itextpdf.text.pdf.PdfAConformanceException: All the fonts must be embedded. This one isn't: ZapfDingbats 16:43:18,645 DEBUG ......

long12356
2016/09/26
295
0
spring mvc web程序中post请求返回405,使用get能正常访问

我搭了一个spring mvc 的web程序,不过使用post方式访问总返回405. 控制代码: import javax.servlet.http.HttpSession; import org.apache.log4j.Logger; import org.springframework.ster......

等花的牛粪
2015/08/27
6.6K
5
spring mvc 中一些特殊的类

涉及到一些spring mvc 的设计 关键类赋予特别的关心 Table 16.1. Special bean types in the WebApplicationContext Bean type Explanation HandlerMapping Maps incoming requests to handl......

triankg
2014/06/19
53
0
centos7 Install BIND

[1] Install BIND. [root@dlp ~]# [2] Configure BIND This example is done with grobal IP address [172.16.0.80/29], Private IP address [10.0.0.0/24], Domain name [server.world]. Ho......

天才白痴
2014/10/30
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

springboot2.0 maven打包分离lib,resources

springboot将工程打包成jar包后,会出现获取classpath下的文件出现测试环境正常而生产环境文件找不到的问题,这是因为 1、在调试过程中,文件是真实存在于磁盘的某个目录。此时通过获取文件路...

陈俊凯
今天
6
0
BootStrap

一、BootStrap 简洁、直观、强悍的前端开发框架,让web开发更加迅速、简单 中文镜像网站:http://www.bootcss.com 用于开发响应式布局、移动设备优先的WEB项目 1、使用boot 创建文件夹,在文...

wytao1995
今天
10
0
小知识:讲述Linux命令别名与资源文件的区别

别名 别名是命令的快捷方式。为那些需要经常执行,但需要很长时间输入的长命令创建快捷方式很有用。语法是: alias ppp='ping www.baidu.com' 它们并不总是用来缩短长命令。重要的是,你将它...

老孟的Linux私房菜
今天
8
0
《JAVA核心知识》学习笔记(6. Spring 原理)-5

它是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是 Spring 仍然可以和其他的框架无缝整合。 6.1.1. Spring 特点 6.1.1.1. 轻量级 6.1.1.2. 控制反转 6.1.1....

Shingfi
今天
8
0
Excel导入数据库数据+Excel导入网页数据【实时追踪】

1.Excel导入数据库数据:数据选项卡------>导入数据 2.Excel导入网页数据【实时追踪】:

东方墨天
今天
11
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部