目标
- 了解HTTP 请求/响应头及常见的属性;
- 了解如何使用SpringBoot处理头信息 ;
- 了解如何使用SpringBoot处理cookie ;
- 学会如何对 Session 进行读写;
- 了解如何在不同请求间传递 flash参数
一、Http 头信息
HTTP 头(Header)是一种附加内容,独立于请求内容和响应内容。
HTTP 协议中的大量特性都通过Header信息交互来实现,比如内容编解码、缓存、连接保活等等。
如下面的一个请求响应:
Request
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*
@GetMapping("/first")
public String first(final RedirectAttributes redirectAttrs) {
logger.info("redirect start:{}");
redirectAttrs.addFlashAttribute("flash", UUID.randomUUID().toString());
return "redirect:/flash/second";
}
@GetMapping("/second")
@ResponseBody
public String second(@ModelAttribute("flash") String flash) {
logger.info("redirect receive {}", flash);
return flash;
}
交互原理
Sprintboot中Flash机制也是利用Session实现的,其中FlashMapManager接口实现了Flash参数的管理。
默认的实现是SessionFlashMapManager,可以通过RequestContextUtils获得上下文中的FlashMapManager对象。
RequestContextUtils通过Request Scope(请求上下文)存取对象
这也是一个本文未提及的scope域,Request上下文是利用线程变量实现的,通常用于线程内业务处理的数据交互。
小结
HTTP 头信息是一种附加内容,用于实现HTTP协议中的各种特性,在开始部分介绍了常见的头信息定义。
本文主要介绍了几种常见的HTTP scope信息的存取方法,包括如何对header、cookie进行读取及修改。
springboot 内嵌了Servlet容器,会话处理机制上沿用了JSESSIONID,通过代码示例介绍了会话的处理方法;
Flash参数是一种***阅后即焚***的数据,其底层实现也用了session的实现方案。
欢迎继续关注"美码师的补习系列-springboot篇" ,期待更多精彩内容-



