Springboot的会话跟踪

问题描述:

假设我已经完成了一个登录界面Login.html,还有一个登录成功之后的展示界面Display.html。现在我想把在Login.html上得到的用户名传递到Display.html页面上,从而对Display.html进行数据渲染。那么该如何实现用户状态信息在页面之间的传递呢?


解决方案:

方法一

给URL附加对应的查询字符,通过地址栏传递不敏感的数据。例如,我想传递username = “小刘”,就可以在跳转目标的URL后面加上?username = “小刘”即可,如原先的跳转链接是“Diplay.html",加上查询字符后,就变成了"Diplay.html?username = “小刘"。代码如下

/*发送的值要经过编码处理,否则会乱码 */
      src=Display.html?username="+encodeURIComponent( "小刘");

然后目标页面通过如下代码就可提取出username

            var b=window.location.search.split("?");	//window.location.search返回的是当前页面的URL		 
			var a=b[1].split("=");
			var username=decodeURIComponent(a[1]);//提取下来的查询字符要经过decodeURIComponent()解码,否则会出现乱码现象

方法二

利用会话跟踪技术。登录成功后,后端接口为该请求绑定一个独一无二的session对象并返回一个Cookie字段给客户端,该Cookie字段在响应头部里,保存着这个session对象的唯一标识,客户端会把接受到的Cookie字段保存在内存里或者硬盘里,而session对象则保存在服务器里。当用户再次发送请求时,会把Cookie字段一并发送,服务器就可以根据Cookie字段里存储的sessionID名,找出对应的session对象。如果session里绑定了用户的状态信息,就可以通过session对象来记录用户的状态信息了。不同用户对应着不同的session对象。

session对象的特征

  • 它是由服务端保存的,且存在一定时间后会自动消失,可以通过session.setMaxInactiveInterval(-1)设置为永远都不失效。而Cookie是保存在客户端的内存或者硬盘里的

  • session对象不会因为用户在不同静态页面之间发生了跳转,或者是刷新了当前页面而发生改变。因为客户端是以Cookie的形式保存了对应session的ID名,这个Cookie是存储在用户电脑内存或者硬盘里的。只要用户不换浏览器(比如当前是用edge浏览器访问的,而接下来使用chrome浏览器访问)或者不换电脑,每次请求后端接口时,还是会以Cookie的形式提交sessionID名的。

  • 用户就算同时开启多个相同类型的浏览器进行访问,它们对应的session对象也都是相同的

  • 如果session对象没有被设置成永不失效,且你在一定的时间内没有发起第二次请求,则session会自动消失

  • 服务器重启后,session也会消失

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值