目录
定义:Cookie是服务器发送到浏览器,并保存在浏览器端的一小块数据。浏览器下次访问该服务器时,会自动携带该数据块,将其发送给服务器。
作用:由于HTTP是无状态的,在同一次连接中,两个执行成功的请求之间是没有关系的,这就带来了问题,用户没办法在同一个网站进行连续的交互。会话技术就是可以解决这个问题,将一次连接中多个请求连接在一起。

具体代码实现
- // cookie示例
- @RequestMapping(path = "/cookie/set", method = RequestMethod.GET)
- @ResponseBody
- public String setCookie(HttpServletResponse response) {
- // 创建cookie
- Cookie cookie = new Cookie("code", CommunityUtil.getUUID());
- // 设置cookie生效的范围
- cookie.setPath("/community/alpha");
- // 设置cookie的生存时间
- cookie.setMaxAge(60 * 10);
- // 发送cookie
- response.addCookie(cookie);
-
- return "set cookie";
- }
-
- @RequestMapping(path = "/cookie/get", method = RequestMethod.GET)
- @ResponseBody
- public String getCookie(@CookieValue("code") String code) {
- System.out.println(code);
- return "get cookie";
- }
【验证】第一步,服务器成功cookie,从responseHeaders中可以看出,已经生成cookie

【第二步】在RequestHeader中携带了cookie信息

是JaveEE的标准,用于在服务器端记录客户端的信息。数据存放在服务端更加安全,但也会增加服务端的内存。

- // session示例
-
- @RequestMapping(path = "/session/set", method = RequestMethod.GET)
- @ResponseBody
- public String setSession(HttpSession session) {
- session.setAttribute("id", 1);
- session.setAttribute("name", "Test");
- return "set session";
- }
-
- @RequestMapping(path = "/session/get", method = RequestMethod.GET)
- @ResponseBody
- public String getSession(HttpSession session) {
- System.out.println(session.getAttribute("id"));
- System.out.println(session.getAttribute("name"));
- return "get session";
- }
【验证】创建session

利用Cookie访问Session


解决方案:利用Redis+token来缓存。解决用户状态记录的问题
