备注:我本地浏览器的报头(Request Header)信息如下:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch, br
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:JSESSIONID=0BBEA8614215D6E206FB0F66B8DCE3D3; csrftoken=lrfHnPB6TGmnXW9DwWZxIB1ezBgSIuAORWbMaEigY3zExaJo9YHWgdSGtTctr1Zc; Orchrd-=%7B%22Exp-N42-Layouts%22%3A%22open%22%2C%22Exp-N42-Settings%22%3A%22open%22%7D
Host:localhost:8080
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36

@RequestHeader包含属性值:

--- value :参数名称

--- required :是否必须,默认为true,表示请求参数中必须包含对应的参数,否则抛出异常。

--- defaultValue:当请求参数缺少或者有请求参数但值为空时,值采用该设置值。

请求头包含若个属性,服务器可根据请求头属性信息获取客户端的信息,通过@RequestHeader既可以将请求头的属性值绑定到处理方法的入参中。

示例:

在HelloWord.java中添加方法testRequestHeader函数:

测试1)测试报头参数为key,而且是必须,且该报文参数没有被包含本地报文参数中。

    @RequestMapping("/testRequestHeader")
public String testRequestHeader(@RequestHeader(value = "key", required = true) String key) {
System.out.println("testRequestHeader, key:" + key);
return SUCCESS;
}

访问请求地址:http://localhost:8080/SpringMVC_01/class_requestmapping/testRequestHeader

抛出了异常:

HTTP Status 500 - Request processing failed; nested exception is org.springframework.web.bind.annotation.support.HandlerMethodInvocationException: Failed to invoke handler method [public java.lang.String com.dx.springlearn.handlers.HelloWord.testRequestHeader(java.lang.String)]; nested exception is java.lang.IllegalStateException: Missing header 'key' of type [java.lang.String]

测试2)修改测试1)中testRequestHeader代码为如下:

    @RequestMapping("/testRequestHeader")
public String testRequestHeader(@RequestHeader(value = "key", required = true, defaultValue = "-999") String key) {
System.out.println("testRequestHeader, key:" + key);
return SUCCESS;
}

访问请求地址:http://localhost:8080/SpringMVC_01/class_requestmapping/testRequestHeader

请求正常响应(无异常抛出),打印信息为:

testRequestHeader, key:-999

测试3)修改testRequestHeader代码为如下:

    @RequestMapping("/testRequestHeader")
public String testRequestHeader(@RequestHeader(value = "key", required = true, defaultValue = "-999") String key,
@RequestHeader(value = "Accept-Encoding") String ae) {
System.out.println("testRequestHeader, key:" + key + ", Accept-Encoding:" + ae);
return SUCCESS;
}

访问请求地址:http://localhost:8080/SpringMVC_01/class_requestmapping/testRequestHeader

请求正常响应(无异常抛出),打印信息为:

testRequestHeader, key:-999, Accept-Encoding:gzip, deflate, sdch, br

@CookieValue包含属性值:

--- value :参数名称

--- required :是否必须,默认为true,表示请求参数中必须包含对应的参数,否则抛出异常。

--- defaultValue:当请求参数缺少或者有请求参数但值为空时,值采用该设置值。

@CookieValue可让处理方法入参绑定某个cookie值。

测试方法:

    @RequestMapping("/testCookieValue")
public String testCookieValue(@CookieValue(value = "JSESSIONID", required = true, defaultValue = "-999") String jsessionId) {
System.out.println("testCookieValue, JSESSIONID:" + jsessionId );
return SUCCESS;
}

测试url:http://localhost:8080/SpringMVC_01/class_requestmapping/testCookieValue

打印结果:testCookieValue, JSESSIONID:A48F72D870ABF4AECDEE1631F3D3F89C

SpringMVC(六):@RequestMapping下使用@RequestHeader绑定请求报头的属性值、@CookieValue绑定请求中的Cookie值的更多相关文章

  1. WPF 让普通 CLR 属性支持 XAML 绑定(非依赖属性),这样 MarkupExtension 中定义的属性也能使用绑定了

    原文:WPF 让普通 CLR 属性支持 XAML 绑定(非依赖属性),这样 MarkupExtension 中定义的属性也能使用绑定了 版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4 ...

  2. 模拟axios的创建[ 实现调用axios()自身发送请求或调用属性的方法发送请求axios.request() ]

    1.axios 函数对象(可以作为函数使用去发送请求,也可以作为对象调用request方法发送请求) ❀ 一开始axios是一个函数,但是后续又给它添加上了一些属性[ 方法属性] ■ 举例子(axio ...

  3. SpringMVC(六) RequestMapping 路径中ant风格的通配符

    SpringMVC支持路径中包含ant风格的通配符,常用的几种通配符及意义如下: ? 任意一个字符 * 任意多个字符 ** 匹配多层路径 测试控制器代码: package com.tiekui.spr ...

  4. springMVC(1)---@RequestMapping详解

    @RequestMapping详解 RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径.这句话,太熟悉了.   ...

  5. SpringMVC的@RequestMapping和Controller方法返回值

    本节内容: @RequestMapping Controller方法返回值 一.@RequestMapping 通过@RequestMapping注解可以定义不同的处理器映射规则. 1. URL路径映 ...

  6. SpringMVC注解@RequestMapping之produces属性导致的406错误

    废话不多说,各位,直接看图说话,敢吗?这个问题网上解决的办法写的狠是粗糙,甚至说这次我干掉它完全是靠巧合,但是也不否认网上针对406错误给出的解决方式,可能是多种情况下出现的406吧?我这次的流程就是 ...

  7. springMVC访问 WEB-INF 下的 jsp 和 html

    配置freemarker,记得加上jar包 <?xml version="1.0" encoding="UTF-8"?> <beans xml ...

  8. SpringMVC的RequestMapping

    在Http请求中,我们每天都在使用Content-type来指定不同格式的请求信息,但是却很少有人去全面了解content-type中允许的值有多少,这里将讲解Content-Type的可用值,以及在 ...

  9. JavaWeb-RESTful(三)_使用SpringMVC开发RESTful_下

    JavaWeb-RESTful(一)_RESTful初认识 传送门 JavaWeb-RESTful(二)_使用SpringMVC开发RESTful_上 传送门 JavaWeb-RESTful(三)_使 ...

随机推荐

  1. js中的Hook

    1. 简单理解: hook(钩子)就是: 把将要执行的的函数或者一系列动作注册到一个统一的接口下面, 当应用程序调用此接口(即hook)时,就等于调用了这一系列动作.

  2. Android一个小巧的记录app(便签或者日记 随心)

    入驻博客园两个月今天第一次发随笔,,话不多说,直接上图展示效果 主界面用的RecyclerView的瀑布流(StaggeredGridLayoutManager),同时加上Floatbutton悬浮按 ...

  3. jmeter 前置处理器提取用户cookie信息 比如jsessionid

    一般登录过程分成两步,一步是打开登录页面, 一步是输入用户名和密码登录 现在B/S架构的系统好多时候都只在客户端的cookie信息保留一个jsessionId,然后每次请求的时候在请求的头信息的coo ...

  4. python学习笔记1——基础

    1)注释 单行注释以#开头,例:#第一个注释 多行注释可用多个#号,还有'''和""",例: #第一行注释 #第二行注释 ''' 第三行注释 第四行注释 ''' &quo ...

  5. PHP 引用是个坑,请慎用

    去年我参加了很多次会议,其中八次会议里我进行了相关发言,这其中我多次谈到了 PHP 的引用问题,因为很多人对它的理解有所偏差.在深入讨论这个问题之前,我们先回顾一下引用的基本概念,明确什么是" ...

  6. C#编程语言之委托与事件(一)—— C/C++函数指针和C#委托初步

    相信正在学习C#的人都有学习过C或C++的经验,本文要讲的第一个要点是C#中的委托(delegate,有些资料也叫代表).什么是委托,很多人都能自然而然地想到C/C++中的函数指针,事实上很多书和资料 ...

  7. 听翁恺老师mooc笔记(16)--程序设计与C语言

    问题1:计算机遍布生活的各个方面,若你需要一个功能可以下载APP,我们需要的大部分功能都可以找到对应的APP,如果没有可以自己写一个软件,但是很少人需要这么做,那么我们为什么学习计算机编程语言? 学习 ...

  8. 【Alpha版本】冲刺阶段 - Day1 - 启航

    Alpha 阶段成员分工及任务量 成员 分工 任务量(小时) 袁逸灏 完成app用户车辆,子弹发射,背景移动,暂停界面,音乐界面,音乐查找,音乐播放 25 刘伟康 项目进度把控.分配任务.组织会议.整 ...

  9. QTableView

    QTableView常用于实现数据的表格显示.下面我们如何按步骤实现学生信息表格: 一 添加表头 //准备数据模型     QStandardItemModel *student_model = ne ...

  10. 亚马逊AWS学习——VPC里面几个概念的关系

    VPC中涉及几个概念: VPC 子网 路由表 Internet网关 安全组 今天来讲讲这几个概念之间的关系. 1. VPC 说的就是VPC,当然VPC范围是最大的,VPC即virtual privat ...