3.11.1 cookie

  • 以键值对的形式存储信息在浏览器
  • cookie 不能跨域,当前及其父级域名可以取值
  • cookie 可以设置有效期
  • cookie 可以设置 path

    3.11.2 session

  • 基于服务器内存的缓存(非持久化),可保存请求会话

  • 每个 session 通过 sessionid 来区分不同请求
  • session 可设置过期时间
  • session 也是以键值对形式存在的

在 foodie-dev-api 模块下的 HelloController 文件添加 getSession 方法

  1. package com.imooc.controller;
  2. import org.springframework.web.bind.annotation.GetMapping;
  3. import org.springframework.web.bind.annotation.RestController;
  4. import springfox.documentation.annotations.ApiIgnore;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpSession;
  7. /**
  8. * @author 92578
  9. * @since 1.0
  10. */
  11. @ApiIgnore
  12. @RestController
  13. public class HelloController {
  14. @GetMapping("/hello")
  15. public Object hello() {
  16. return "Hello World~";
  17. }
  18. @GetMapping("/setSession")
  19. public Object setSession(HttpServletRequest request) {
  20. HttpSession session = request.getSession();
  21. // 设置 session
  22. session.setAttribute("userInfo", "new user");
  23. // 设置过期时间
  24. session.setMaxInactiveInterval(3600);
  25. // 获取 session
  26. session.getAttribute("userInfo");
  27. // 移除 session
  28. // session.removeAttribute("userInfo");
  29. return "ok";
  30. }
  31. }

打开浏览器,输入 http://localhost:8088/setSession 返回 OK
image.png
打开浏览器调试工具,发现已经获取到 jsessionid
image.png
刷新页面,切换到“网络”,发送的请求中已经包含了 cookie
image.png