SpringMVC(六):@RequestMapping下使用@RequestHeader绑定请求报头的属性值、@CookieValue绑定请求中的Cookie值
备注:我本地浏览器的报头(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值的更多相关文章
- WPF 让普通 CLR 属性支持 XAML 绑定(非依赖属性),这样 MarkupExtension 中定义的属性也能使用绑定了
原文:WPF 让普通 CLR 属性支持 XAML 绑定(非依赖属性),这样 MarkupExtension 中定义的属性也能使用绑定了 版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4 ...
- 模拟axios的创建[ 实现调用axios()自身发送请求或调用属性的方法发送请求axios.request() ]
1.axios 函数对象(可以作为函数使用去发送请求,也可以作为对象调用request方法发送请求) ❀ 一开始axios是一个函数,但是后续又给它添加上了一些属性[ 方法属性] ■ 举例子(axio ...
- SpringMVC(六) RequestMapping 路径中ant风格的通配符
SpringMVC支持路径中包含ant风格的通配符,常用的几种通配符及意义如下: ? 任意一个字符 * 任意多个字符 ** 匹配多层路径 测试控制器代码: package com.tiekui.spr ...
- springMVC(1)---@RequestMapping详解
@RequestMapping详解 RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径.这句话,太熟悉了. ...
- SpringMVC的@RequestMapping和Controller方法返回值
本节内容: @RequestMapping Controller方法返回值 一.@RequestMapping 通过@RequestMapping注解可以定义不同的处理器映射规则. 1. URL路径映 ...
- SpringMVC注解@RequestMapping之produces属性导致的406错误
废话不多说,各位,直接看图说话,敢吗?这个问题网上解决的办法写的狠是粗糙,甚至说这次我干掉它完全是靠巧合,但是也不否认网上针对406错误给出的解决方式,可能是多种情况下出现的406吧?我这次的流程就是 ...
- springMVC访问 WEB-INF 下的 jsp 和 html
配置freemarker,记得加上jar包 <?xml version="1.0" encoding="UTF-8"?> <beans xml ...
- SpringMVC的RequestMapping
在Http请求中,我们每天都在使用Content-type来指定不同格式的请求信息,但是却很少有人去全面了解content-type中允许的值有多少,这里将讲解Content-Type的可用值,以及在 ...
- JavaWeb-RESTful(三)_使用SpringMVC开发RESTful_下
JavaWeb-RESTful(一)_RESTful初认识 传送门 JavaWeb-RESTful(二)_使用SpringMVC开发RESTful_上 传送门 JavaWeb-RESTful(三)_使 ...
随机推荐
- 《深入理解计算机系统》第7章:重定位PC相对引用的理解
在第七章<链接>中的静态链接有对符号进行重定位PC相对引用的处理,书上对应的还有公式,但不是很好理解.现做实验对公式进行理解(公式内容如有兴趣可以参考原文)
- maven compile启动报错
ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-co ...
- poj-1045(数学不好怪我咯)
Description Consider the AC circuit below. We will assume that the circuit is in steady-state. ...
- 【Bootstrap】 bootstrap-table表格组件
[Bootstrap-table] 顾名思义,这个组件专注于bootstrap风格的表格的设计,并且提供了很多表格的基础和进阶的功能,给我们开发前端的表格省下很多力气. 本文主要参考这位博主的系列文章 ...
- 关于 Git使用的全面总结 —— 致敬Git之父Linux
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px ".PingFang SC"; color: #454545 } p.p2 ...
- c# 基于FTP协议的简易软件自动升级程序
最近在重写了一个老的产品条码扫描程序,客户端数越有30个,因为经常有更新,C/S维护非常不方便,所以做一个自动更新程序特别有必要. 在网上随便找了找自动更新的方案,大多使用VS的发布/更新功能,不太喜 ...
- Python第二话 初识复杂数据类型(list、dictionary、tuple)
上一篇我们简单认识了数据类型:数字number和字符串string,这篇我们就来隆重介绍一下重量级的数据类型:列表list.字典dictionary和元组tuple. 一.列表List: ①列表是什么 ...
- 02_LInux的目录结构_我的Linux之路
前两节已经教大家怎么在虚拟机安装Linux系统 这一节我们来学习Linux的目录结构,讲一下linux的整个系统架构,提前熟悉一下Linux 在Linux或Unix系统中有一个非常重要的概念,就是一切 ...
- python+selenium:解决上传文件<input type='file'>标签属性被css的visibility隐藏导致无法定位元素的问题
要想上传文件,需要找到在HTML中<input type="file" />这个标签,有它就可以利用send_keys上传文件,不过这里的<input>元素 ...
- C语言作业--数据类型
一.PTA实验作业 题目1:7-7 发红包 1. 本题PTA提交列表 2. 设计思路 1定义整型变量hundred,fifty,twenty,ten,five,two,one分别存放不同金额的张数,n ...