我把值存入session里面。但是我第一次获取不了session的值。我刷新页面,然后就可以获取sessiond的值了,然而获取的是上一个session的值,请问这是什么问题,
存入session的代码:
ServletActionContext.getRequest().getSession().setAttribute("sRand", sRand);
获取session的代码:
${sRand}
例如
(刷新和启动就会进入这个方法)
string sRand = "123(这里的值每一次都不一样,123是现在的值)";
存入session之前我把名称为sRand的seesion删除
ActionContext actionContext = ActionContext.getContext();
actionContext.getSession().remove("sRand");
再存入session
ServletActionContext.getRequest().getSession().setAttribute("sRand", sRand);
页面获取的是null的,
如果我刷新页面
(刷新和启动就会进入这个方法)
string sRand = "456(这里的值每一次都不一样,456是现在的值)";
存入session之前我把名称为sRand的seesion删除
ActionContext actionContext = ActionContext.getContext();
actionContext.getSession().remove("sRand");
再存入session
ServletActionContext.getRequest().getSession().setAttribute("sRand", sRand);
页面获取的是123的,
这是为什么,我把上一个session删除了,为什么获取的是123,而不是456,还有为什么我第一次获取不到123,
问题我知道了,但是不知道怎么解决:
刷新页面重新请求后台了吗?
对
大哥回答重点。。。。。
@Mr-LYF: 看到了你补充的问题,你试着remove掉后不要set,看看取出来的值是不是空?
@Mr.Liu_Blog: 问题是session赋值先于刷新页面,这怎么解决
你试试把浏览器缓存清空一下,项目也clean一下,试试看,一般情况下,你设置了session刷新页面后获取的session就不该是上一次的值
你启动的时候仅初始化session试试,session.invalidate();
然后在跳转页面(也就是刷新页面的时候请求的后台方法)里面给session赋值
@大宇007: 怎么在刷新页面的时候请求后台方法
@大宇007: 一定要请求后台方法先于刷新页面才能取出数据
@Mr-LYF: 你刷新页面就相当于跳转到这个页面,这个url对应的方法里面设置啊
@大宇007: 不懂,,,
@Mr-LYF: 那你告诉我,你是怎么实现页面的刷新的?或者页面的跳转的?
@大宇007: 等你一个回答,我等了几天,😠,,我不搞了,我不管这个问题了(-"-怒)
@Mr-LYF: 额。抱歉,没看明白,你自己测试一下就清楚了,每次给session赋值之后,打印一下session的值,在你清理session的值之后再打印一下看有没有清理,最后跳转到页面的时候(也就是return前面)在打印一下session(也就是你最终到页面的session值),自己比对一下就应该知道问题在哪里了
是不是删除问题,你可以直接设置session的一个属性值生命周期(具体忘了。。。)让他过期就好了。不过感觉session最好不要频繁保存值,直接用变量存值不就好了。