@CookieValue解密,确实很好用啊
路人甲Java
共 4316字,需浏览 9分钟
·
2021-12-25 20:05
优质项目源码推荐
SpringBoot + Vue + MyBatis 音乐网站项目 【超高颜值】一款高颜值的 SpringBoot+JPA 博客项目 推荐一款 SpringBoot 私活脚手架,开发效率可提高 70% Java 私活神器,一套 SpringBoot+Vue 通用的后台管理系统 SpringCloud 网上商城系统(附源码及教程)
大家好,我是路人,这是 SpringMVC 系列第 26 篇。
当我们在接口中想获取 cookie 值的时候,怎么写代码更简单呢?
此时可以使用 SpringMVC 中的@CookieValue 注解来标注参数,下面来看具体的用法。
1、预备知识
2、@CookieValue
该注释指示应将方法参数绑定到 HTTP cookie。
方法参数可以声明为
javax.servlet.http.Cookie
类型,也可以声明为 Cookie 值类型(String、int 等)。
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface CookieValue {
/**
* cookie名称
*/
@AliasFor("name")
String value() default "";
/**
* 同value属性
*/
@AliasFor("value")
String name() default "";
/**
* 是否需要cookie。
* 默认值为true,如果请求中缺少cookie,则会引发异常。
* 如果请求中不存在cookie,则希望使用空值,请将此选项切换为false。
* 或者,提供一个默认值defaultValue,它隐式地将此标志设置为false。
*/
boolean required() default true;
/**
* 默认值
*/
String defaultValue() default ValueConstants.DEFAULT_NONE;
}
3、2 种用法
用法 1:参数类型为非 javax.servlet.http.Cookie
类型,比如(String、int 等类型)用法 2:参数类型为 javax.servlet.http.Cookie
类型
4、案例代码
package com.javacode2018.springmvc.chat18.controller;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.Cookie;
import java.util.LinkedHashMap;
import java.util.Map;
@RestController
public class CookieValueController {
@RequestMapping("/cookievalue/test1")
public Map test1(@CookieValue("name") String name,
@CookieValue("age") int age) {
Map result = new LinkedHashMap<>();
result.put("name", name);
result.put("age", age);
return result;
}
/**
* @param nameCookie
* @param ageCookie
* @return
*/
@RequestMapping("/cookievalue/test2")
public Map test2(@CookieValue("name") Cookie nameCookie,
@CookieValue("age") Cookie ageCookie) {
Map result = new LinkedHashMap<>();
result.put("nameCookie", nameCookie);
result.put("ageCookie", ageCookie);
return result;
}
}
测试用例代码
###
POST http://localhost:8080/chat18/cookievalue/test1
Cookie: name=java; age=26
###
POST http://localhost:8080/chat18/cookievalue/test2
Cookie: name=java; age=26
运行 2 个用例
用例 1 输出
{
"name": "java",
"age": 26
}
用例 2 输出
{
"nameCookie": {
"name": "name",
"value": "java",
"version": 0,
"comment": null,
"domain": null,
"maxAge": -1,
"path": null,
"secure": false,
"httpOnly": false
},
"ageCookie": {
"name": "age",
"value": "26",
"version": 0,
"comment": null,
"domain": null,
"maxAge": -1,
"path": null,
"secure": false,
"httpOnly": false
}
}
5、@CookieValue 原理
@CookieValue
标注的参数的值来源于org.springframework.web.servlet.mvc.method.annotation.ServletCookieValueMethodArgumentResolver
解析器
6、代码位置及说明
6.1、git 地址
https://gitee.com/javacode2018/springmvc-series
6.2、本文案例代码结构说明
7、SpringMVC 系列目录
SpringMVC 系列第 1 篇:helloword SpringMVC 系列第 2 篇:@Controller、@RequestMapping SpringMVC 系列第 3 篇:异常高效的一款接口测试利器 SpringMVC 系列第 4 篇:controller 常见的接收参数的方式 SpringMVC 系列第 5 篇:@RequestBody 大解密,说点你不知道的 SpringMVC 系列第 6 篇:上传文件的 4 种方式,你都会么? SpringMVC 系列第 7 篇:SpringMVC 返回视图常见的 5 种方式,你会几种? SpringMVC 系列第 8 篇:返回 json & 通用返回值设计 SpringMVC 系列第 9 篇:SpringMVC 返回 null 是什么意思? SpringMVC 系列第 10 篇:异步处理 SpringMVC 系列第 11 篇:集成静态资源 SpringMVC 系列第 12 篇:拦截器 SpringMVC 系列第 13 篇:统一异常处理 SpringMVC 系列第 14 篇:实战篇:通用返回值 & 异常处理设计 SpringMVC 系列第 15 篇:全注解的方式 & 原理解析 SpringMVC 系列第 16 篇:通过源码解析 SpringMVC 处理请求的流程 SpringMVC 系列第 17 篇:源码解析 SpringMVC 容器的启动过程 SpringMVC 系列第 18 篇:强大的 RequestBodyAdvice 解密 SpringMVC 系列第 19 篇:强大的 ResponseBodyAdvice 解密 SpringMVC 系列第 20 篇:RestFull 详解 SpringMVC 系列第 21 篇:接口调用过利器 RestTemplate SpringMVC 系列第 22 篇:参数解析器 HandlerMethodArgumentResolver 解密 SpringMVC 系列第 23 篇:@RequestParam 用法及原理详解 SpringMVC 系列第 24 篇:@RequestBody 用法及原理详解 SpringMVC 系列第 25 篇:@RequestHeader 用法及原理详解
8、更多系列文章
Spring 高手系列(共 56 篇) Java 高并发系列(共 34 篇) MySql 高手系列(共 27 篇) Maven 高手系列(共 10 篇) Mybatis 系列(共 12 篇) 聊聊 db 和缓存一致性常见的实现方式 接口幂等性这么重要,它是什么?怎么实现? 泛型,有点难度,会让很多人懵逼,那是因为你没有看这篇文章!
9、最新资料
尚硅谷 Java 学科全套教程(总 207.77GB) 2021 最新版 Java 微服务学习线路图 + 视频 阿里技术大佬整理的《Spring 学习笔记.pdf》 阿里大佬的《MySQL 学习笔记高清.pdf》 2021 版 java 高并发常见面试题汇总.pdf Idea 快捷键大全.pdf
评论
有没有啥好用的电子智能名片啊?
传统名片+数字化=AI电子名片,AI电子名片在前端开放了名片社交关系链,在后端部署了AI雷达用于精确探测客户访问轨迹、行为轨迹等信息,用于微信生态及MICE生态体系,形成了一套基于名片社交数据的SCRM。数字名片、永不丢失,提供企业专属的电子名片多模板定制,企业成员名片批量导入管理,赋能企业全员双线营销推广。线上使用:微信消息、微信群、微信朋友圈、公众号、线上会展活动等。线下使用:展览会、会销、博览会、活动会议、户外广告、线下拜访等
定制开发企业专属的名片模板,名片加V认证同时锁定公司AI企业主页及发票抬头,线上线下多场景使用智能数字名片。定制名片可像ERP一样批量创建管理,批量导入,批量生成名片,轻松管理新员工入职,老员工离职,
名片活动行
0