Cookie
package com.litongjava.tio.boot.hello.AController;
import com.litongjava.tio.http.common.Cookie;
import com.litongjava.tio.http.common.HttpRequest;
import com.litongjava.tio.http.common.HttpResponse;
import com.litongjava.annotation.RequestPath;
import com.litongjava.tio.http.server.util.Resps;
@AController
@RequestPath("/test/cookie")
public class TestCookieController {
@RequestPath("/index")
public String index(HttpRequest request) {
Cookie cookie = request.getCookie("access-token");
if (cookie != null) {
String accessToken = cookie.getValue();
return accessToken;
}
return null;
}
@RequestPath("/set-cookie")
public HttpResponse setCookie(HttpRequest request) {
HttpResponse response = Resps.txt(request, "set-cookit");
Cookie cookie = new Cookie(null, "access-token", "token-value", null);
response.addCookie(cookie);
return response;
}
}
Cookie 构建方法
/**
* 创建一个 Cookie
* @param domain cookie的受控域
* @param value 名称
* @param value 值
* @param maxAge 失效时间,单位秒
* @return Cookie 对象
*/
public Cookie(String domain, String name, String value, Long maxAge) {
setName(name);
setValue(value);
setPath("/");
setDomain(domain);
setMaxAge(maxAge);
setHttpOnly(false);
}
这段代码定义了一个使用 tio-boot 框架的 HTTP 控制器,用于处理 /test/cookie
路径下的 Web 请求,并涉及 HTTP Cookie 的读取和设置。以下是对代码的部分解释:
Method
index
:- 当 HTTP 请求发送到 `/test/cookie/index` 时,此方法将被调用。 - 方法从 HTTP 请求中提取名为 `"access-token"` 的 Cookie。 - 如果 Cookie 存在,方法返回 Cookie 的值;否则返回 `null`。
Method
setCookie
:- 当 HTTP 请求发送到
/test/cookie/set-cookie
时,此方法将被调用。 - 创建一个文本响应
"set-cookie"
。 - 构造一个新的 Cookie 对象,名称为
"access-token"
,值为"token-value"
,并将其添加到响应中。 - 返回包含新设置的 Cookie 的响应对象。
- 当 HTTP 请求发送到
Cookie Constructor:
Cookie(String domain, String name, String value, Long maxAge)
: 构造器用于创建一个新的 Cookie 对象。参数包括域名、名称、值和最大有效期。- 在
setCookie
方法中,创建的 Cookie 没有指定域名和最大有效期,这意味着它将被视为会话 Cookie,并且只在客户端与服务器的会话期间有效。
总结:TestCookieController
类是一个 tio-boot HTTP 控制器,它包含两个方法,一个用于读取请求中的特定 Cookie,另一个用于设置新的 Cookie 并将其发送回客户端。这使得该控制器可以在客户端和服务器之间有效地管理 Cookie 数据。