3.11.1 cookie
- 以键值对的形式存储信息在浏览器
- cookie 不能跨域,当前及其父级域名可以取值
- cookie 可以设置有效期
-
3.11.2 session
基于服务器内存的缓存(非持久化),可保存请求会话
- 每个 session 通过 sessionid 来区分不同请求
- session 可设置过期时间
- session 也是以键值对形式存在的
在 foodie-dev-api 模块下的 HelloController 文件添加 getSession 方法
package com.imooc.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
/**
* @author 92578
* @since 1.0
*/
@ApiIgnore
@RestController
public class HelloController {
@GetMapping("/hello")
public Object hello() {
return "Hello World~";
}
@GetMapping("/setSession")
public Object setSession(HttpServletRequest request) {
HttpSession session = request.getSession();
// 设置 session
session.setAttribute("userInfo", "new user");
// 设置过期时间
session.setMaxInactiveInterval(3600);
// 获取 session
session.getAttribute("userInfo");
// 移除 session
// session.removeAttribute("userInfo");
return "ok";
}
}
打开浏览器,输入 http://localhost:8088/setSession 返回 OK
打开浏览器调试工具,发现已经获取到 jsessionid
刷新页面,切换到“网络”,发送的请求中已经包含了 cookie