
我跟你说,刚开始做那个烂七八糟的商城项目,我简直要抓狂了。为因为数据老是丢! 你费劲巴拉地登录进去了,好不容易在A页面存了个用户名,结果一跳转到B页面,卧槽,用户名没了...
我跟你说,刚开始做那个烂七八糟的商城项目,我简直要抓狂了。为因为数据老是丢!
你费劲巴拉地登录进去了,好不容易在A页面存了个用户名,结果一跳转到B页面,卧槽,用户名没了!显示“游客”!我当时就想砸电脑。搞不懂,这用户的状态到底要怎么才能“黏住”?
我瞎搞,想着把用户名使劲往URL后面拼,一长串乱码,那叫一个难看,而且只要一多点几个链接,立马就断了,数据直接丢。后来又试了隐藏域,行是行,但每跳转一次页面就得塞一次,太蠢了,代码写得一团麻。
后来我们组那个老手看不下去了,他拍了拍我的肩膀,扔过来一行代码,就让我的世界清净了。
那行代码里,就有个玩意儿叫 。

他没多解释,就让我去翻文档,我一看,原来这玩意儿就是个“数据中转站”,它不跟页面走,它跟这个用户整个访问过程绑在一起。我当时那感觉,跟发现了新大陆一样!那些丢的数据,终于有地方可以安家了。
我赶紧动手改了我的登录逻辑。我把整个过程拆分成了三步,简单粗暴:
不再用什么乱七八糟的传递,直接在登录处理的那个地方,把需要的用户名、用户ID,一股脑儿地塞进Session里。
比如,*("userName", *()),存好了,我就放心了。

用户从登录页面一跳到首页,再从首页跳到商品列表,我根本不用管。数据就在服务器端那个Session里呆着,安安稳稳,跟着用户的每一次请求走。
到了商品列表页,我需要显示“XXX,欢迎你”,我不用去URL里找,也不用去隐藏域里抠,我直接用 *("userName") 一拿,数据就回来了!
简直太方便了!如果拿不到?那就说明他Session过期了,或者压根儿没登录,直接把他踢回去重新登录,简单明了。
就是这么简单粗暴的存和取,彻底解决了数据丢失的问题。这下我才搞懂了,`*` 压根儿就不是用来传递数据的,它是用来黏住用户状态的!它就是用来给你的项目“定魂”用的!如果你也老是数据丢失,赶紧用起来,立马见效!