关于异步请求springmvc不同controller时取不到session的问题

关于异步请求springmvc不同controller时取不到session的问题,第1张

很多小菜鸟们在使用比如vue的axios对后端进行异步请求时候,比如做到关于注册的验证码的业务时候,明明在后端存进了session时候,但是第二次请求另一个接口的时候session取不到了(null),那是因为前端在请求的时候没有带上cookie,对于后端来说就产生了两个不同的session
那这种情况怎么解决呢?
拿微信小程序举例来说
1、首先我们可以全局设置一个空cookie

2、在第一次请求的接口中获取这次用到的session的id并且作为数据返回

3、在微信小程序中处理业务的js中接受返回的id并且赋值给cookie

4、在第二次请求的时候将cookie封装到请求头中

这样子呢,这种简单粗暴的方式就可以解决不同controlle会产生不同的session的问题啦

你是想做到JSP页面不加入这种小脚本吧,那可以采用EL表达式,或者一些框架的输出方式,通常用EL就可以了,因为EL就是用来运算和表达的

后台获取数据以后,这个数据可以是一个简单类型,也可以是一个对象,如果是同一个请求下的,也就是request对象没有变,那么可以用这个存储,否则要用session存储,存储数据的对象是JSP内置的对象,有page,request,session,application等,每个对象都能存储数据,但是作用于不同,page针对当前页面,request针对一个请求,session针对一个会话,application针对整个应用程序

通常session就可以了

比如后台获取一个String的name值,那么你可以session

("name",name);那么JSP直接可以EL这样写:${

name}获取这个值,这里的name是后台封装的键的名,不是后面变量name的名

如果客户端请求的cookie中不包含JSESSIONID,服务端调用requestgetSession()时就会生成并传递给客户端,此次响应头会包含设置cookie的信息如果客户端请求的cookie中包含JSESSIONID,服务端调用requestgetSession()时就会根据JSESSIONID进行查找对象,如果能查到就返回,否则就跟没传递JSESSIONID一样;技术分享彻底的动静分离,对session并无影响,无论是直接浏览器url请求还是ajax请求都会在客户端cookie生成sessionid;如果要通过缓存进行自行管理session也是可以的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13387073.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-26
下一篇 2023-07-26

发表评论

登录后才能评论

评论列表(0条)

保存