Spinrg WebFlux中Cookie的读写示例 Spinrg WebFlux是基于响应式编程和函数式编程的Web框架,它提供了非阻塞式的I/O处理和异步编程模型。与传统的WebMvc框架不同,WebFlux不基于Servlet规范,而是遵守HTTP协议。这就导致了在Cookie的读写方面与WebMvc的差异。 在WebMvc中,Cookie的读写非常直接,通过HttpServletRequest和HttpServletResponse可以轻松地读写Cookie。但是,在WebFlux中,情况却不同。由于WebFlux不基于Servlet规范,因此HttpServletRequest和HttpServletResponse这些Servlet层级的接口无法使用。这就意味着开发者需要按照HTTP协议来读写Cookie。 在HTTP协议中,服务端可以通过在response中添加Set-Cookie头来让浏览器记录Cookie,而浏览器则在request中使用Cookie头来传递cookie。写Cookie可以使用ResponseEntity向response头中添加Set-Cookie。在Spinrg WebFlux中,可以使用CookieBuilder来构建一个cookie字符串,Set-Cookie头除了设置key=value,还可以设置过期日期expires,域名domain,路径path等。 下面是一个使用Spinrg WebFlux读写Cookie的示例代码: ```java @RestController @RequestMapping("/cookie") public class CookieReadAWriteController { @GetMapping("/write") public ResponseEntity<String> cookieWrite() { HttpHeaders headers = new HttpHeaders(); String cookie = new CookieBuilder() .setKey("cookie-text") .setValue(cookieText) .setMaxAge(840000) .setPath("/") .build(); headers.add("Set-Cookie", cookie); return new ResponseEntity<String>("hi," + userName, headers, HttpStatus.OK); } } class CookieBuilder { private String key; private String value; private String expires; private String domain; private String path; public CookieBuilder setKey(String key) { this.key = key; return this; } public CookieBuilder setValue(String value) { this.value = value; return this; } public CookieBuilder setMaxAge(long ms) { // cookie的过期日期为GMT格式的时间。 Date date = new Date(new Date().getTime() + ms); SimpleDateFormat sdf = new SimpleDateFormat("EEE d MMM yyyy HH:mm:ss 'GMT'", Locale.US); sdf.setTimeZone(TimeZone.getTimeZone("GMT")); this.expires = sdf.format(date); return this; } public CookieBuilder setDomain(String domain) { this.domain = domain; return this; } public CookieBuilder setPath(String path) { this.path = path; return this; } public String build() { StringBuilder sb = new StringBuilder(); sb.append(key).append("=").append(value); if (expires != null) { sb.append("; expires=").append(expires); } if (domain != null) { sb.append("; domain=").append(domain); } if (path != null) { sb.append("; path=").append(path); } return sb.toString(); } } ``` 这个示例中,我们使用了CookieBuilder来构建一个cookie字符串,并将其添加到response头中。这样,浏览器就可以记录这个cookie了。 Spinrg WebFlux中的Cookie读写与WebMvc不同,需要按照HTTP协议来读写Cookie。开发者需要使用ResponseEntity和CookieBuilder来读写Cookie。
- 粉丝: 4
- 资源: 904
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助