3.8 @CookieValue注解

3.8 @CookieValue注解

处理 请求头 部分的注解:@RequestHeader,@CookieValue

用途

org.springframework.web.bind.annotation.CookieValue注解用于将请求的Cookie数据映射到请求处理方法的形式参数上

属性

使用@CookieValue注解可指定如下表所示的属性

属性 类型 是否必要 说明
name String 指定请求参数绑定的名称
value String name属性的别名
required boolean 指示参数是否必须绑定
defaultValue String 如果没有传递参数而使用的默认值

代码示例

@CookieValue注解示例代码如下:

1
2
3
4
5
6
@RequestMapping(value="/cookieValueTest")
public void cookieValueTest(
@CookieValue(value="JSESSIONID", defaultValue="") String sessionId)
{
...
}

以上配置会自动将CookieJSESSIONID的值设置到方法的sessionId形式参数上, defaultValue表示Cookie中没有JSESSIONID时默认设置sessionId为空字符串。

示例:@CookieValue注解的使用

新建一个项目CookieValueTest,加入所需的jar文件。

项目结构

展开/折叠
G:\Desktop\随书源码\Spring+Mybatis企业应用实战(第2版)\codes\03\CookieValueTest
├─src\
│ └─org\
│   └─fkit\
│     └─controller\
│       └─CookieValueController.java
└─WebContent\
  ├─index.jsp
  ├─META-INF\
  │ └─MANIFEST.MF
  └─WEB-INF\
    ├─lib\
    │ ├─commons-logging-1.2.jar
    │ ├─spring-aop-5.0.1.RELEASE.jar
    │ ├─spring-aspects-5.0.1.RELEASE.jar
    │ ├─spring-beans-5.0.1.RELEASE.jar
    │ ├─spring-context-5.0.1.RELEASE.jar
    │ ├─spring-context-indexer-5.0.1.RELEASE.jar
    │ ├─spring-context-support-5.0.1.RELEASE.jar
    │ ├─spring-core-5.0.1.RELEASE.jar
    │ ├─spring-expression-5.0.1.RELEASE.jar
    │ ├─spring-instrument-5.0.1.RELEASE.jar
    │ ├─spring-jcl-5.0.1.RELEASE.jar
    │ ├─spring-jdbc-5.0.1.RELEASE.jar
    │ ├─spring-jms-5.0.1.RELEASE.jar
    │ ├─spring-messaging-5.0.1.RELEASE.jar
    │ ├─spring-orm-5.0.1.RELEASE.jar
    │ ├─spring-oxm-5.0.1.RELEASE.jar
    │ ├─spring-test-5.0.1.RELEASE.jar
    │ ├─spring-tx-5.0.1.RELEASE.jar
    │ ├─spring-web-5.0.1.RELEASE.jar
    │ ├─spring-webflux-5.0.1.RELEASE.jar
    │ ├─spring-webmvc-5.0.1.RELEASE.jar
    │ └─spring-websocket-5.0.1.RELEASE.jar
    ├─springmvc-config.xml
    └─web.xml

示例代码如下:

CookieValueController.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package org.fkit.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class CookieValueController
{
// 测试@CookieValue注解
// 该方法映射的请求为 /cookieValueTest
@GetMapping(value = "/cookieValueTest")
// 将cookie中的JSESSIONID值赋值给方法的参数sessionId
public void cookieValueTest(
@CookieValue(value = "JSESSIONID", defaultValue = "") String sessionId)
{
System.out.println("通过@CookieValue获得JSESSIONID: " + sessionId);
}
}

cookieValueTest方法会自动将CookieJSESSIONID的值赋值给sessionId形式参数,如果Cookie中没有JSESSIONID时默认设置sessionId为空字符串。

index.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>@CookieValue测试</title>
</head>
<body>
<h2>@CookieValue测试</h2>
<a href="cookieValueTest">测试@CookieValue注解</a>
<br>
</body>
</html>

部署CookieValueTest这个Web应用,在浏览器中输入如下URL来测试应用:

1
http://localhost:8080/CookieValueTest/

单击”测试@CookieValue注解”超链接发送请求,将调用cookieValueTest方法,控制台输出结果如下

1
通过@CookieValue获得JSESSIONID: 22334F73E67C6C486559D98FF00539CB

可以看到,请求中JSESSIONID的值被传递到方法的sessionId变量并输出打印在控制台。