这个问题源于验证码的获取与验证,在AController里面获取生成验证码,放到session,如何在BController里面获取?
这个问题源于验证码的获取与验证,在AController里面获取生成验证码,放到session,如何在BController里面获取?
当客户端第一访问服务器的时候,服务器会返回一个sessionId,一般浏览器会使用cookie自动保存sessionId,然后下次请求的时候把这个sessionId带上,就可以获取该sessionId对应的session的数据,也就可以这样获取数据
HttpServletRequest req;
req.getSession().getAttribute();
8 回答6.5k 阅读
2 回答3.4k 阅读
4 回答581 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
1 回答2.1k 阅读✓ 已解决
1 回答943 阅读✓ 已解决
1 回答1.9k 阅读
这个问题的话,如果是单服务器,单应用,在 Spring Boot 中可以这样写 Controller:
根据题主的问题,我这里定义两个 Controller:
SetController.java
GetController.java
上述两个简单的 Controller 演示了在 Spring 中如何存储和读取 Session 中的内容。
如果是单应用,多服务器的话,我能想到的有以下两种解决方案:
1. 使用 Spring Session 分布式存储 Session
这种方式,之前的代码不需要有任何改变,往 Session 中读取和存入属性依然使用
getAttrubite(key)
和setAttribute(key, value)
方法,Spring Session 把分布式会话透明化了。2. 使用 Redis + Token
当然,第二种方式是自己手动维护了一个 Session 机制,还有会话过期、令牌回收、有效性检查等多方面因素,需谨慎考虑。