两个http请求之间本身是没有关联的,有些时候需要用cookie 和session来记录一些之前的请求的信息
cookie 直接将信息保存在客户端,每次请求将之前在浏览器保存的cookie 带上,这种方式减轻了服务器压力,但是同时他存储的信息直接暴露在客户端也带了一些安全问题,浏览器对单域名下保存的cookie个数和数据大小也有限制
session将数据保存在服务器,客户端只需用cookie保存一个sessionid,这样就解决了一些安全问题,同时只要服务器性能足够,session可以存放数据的大小是无限制的,但会增加服务器压力1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47package com.example.demo.controller;
import com.example.demo.user.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class firstController {
"hello") (
public String Hello(User user, HttpServletRequest request, HttpServletResponse response){
// 创建cookie对象
Cookie cookie = new Cookie("username", user.getUsername());
// 设置cookie有效期,单位:秒
cookie.setMaxAge(60*60*24*7);
// 设置跨域携带cookie
cookie.setDomain("www.superstorm.site");
// 给响应设置cookie
response.addCookie(cookie);
// 从request获取session对象
HttpSession session = request.getSession();
// 获取session id
String id = session.getId();
// 添加session内容
session.setAttribute("age", 18);
// 移除字段
// session.removeAttribute("age");
// 销毁session内存,session分配的内存如果没有手动销毁,会有框架自动进行回收
// session.invalidate();
// session.setAttribute("name", "storm");
// session 持久化
Cookie cookie1 = new Cookie("JSSESSIONID", session.getId());
cookie1.setMaxAge(60 * 60 * 24 * 7);
response.addCookie(cookie1);
return "Hello World!" + user.getUsername();
}
}
spring-boot 学习笔记(二)-会话
-------------本文结束感谢您的阅读-------------
文章作者:fengxi
发布时间:2019年03月05日 - 14:03
最后更新:2019年04月04日 - 21:04
原始链接:https://super-storm.github.io/2019/03/05/spring-boot-学习笔记(二)-会话/
许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。