Closed rancedxk closed 7 years ago
海哥你好,基于改过后的代码写了个小测试,代码如下: public void sessionTest(){ HttpSession session = getSession(); Ret ret = Ret.create("sessionid",session.getId()); if(getSessionAttr("data")!=null){ ret.set("data", getSessionAttr("data")); }else{ long data = System.currentTimeMillis(); setSessionAttr("data", data); System.out.println(getSessionAttr("data").toString()); ret.set("data", data); } renderJson(ret); } 用FF隐私浏览窗口首次访问时会在第9行抛出空指针异常。 跟踪进去发现,在首次访问时,凡是用到session.getId(),setSessionAttr,getSessionAttr这几个方法的时候,都会访问JbootHttpSessionWapper的getOrCreatSessionId方法,但是又都得不到JSESSIONID值,导致都会重新生成一次sessionid。 这个问题麻烦确认一下。
public void sessionTest(){
HttpSession session = getSession();
Ret ret = Ret.create("sessionid",session.getId());
if(getSessionAttr("data")!=null){
ret.set("data", getSessionAttr("data"));
}else{
long data = System.currentTimeMillis();
setSessionAttr("data", data);
System.out.println(getSessionAttr("data").toString());
ret.set("data", data);
}
renderJson(ret);
session.getId()
setSessionAttr
getSessionAttr
你写这个是Controller里的一个action?
是的,我写了一个action,就是想测试下session共享的
@rancedxk 已经没问题了
海哥你好,基于改过后的代码写了个小测试,代码如下:
public void sessionTest(){
HttpSession session = getSession();
Ret ret = Ret.create("sessionid",session.getId());
if(getSessionAttr("data")!=null){
ret.set("data", getSessionAttr("data"));
}else{
long data = System.currentTimeMillis();
setSessionAttr("data", data);
System.out.println(getSessionAttr("data").toString());
ret.set("data", data);
}
renderJson(ret);
}
用FF隐私浏览窗口首次访问时会在第9行抛出空指针异常。 跟踪进去发现,在首次访问时,凡是用到session.getId()
,setSessionAttr
,getSessionAttr
这几个方法的时候,都会访问JbootHttpSessionWapper的getOrCreatSessionId方法,但是又都得不到JSESSIONID值,导致都会重新生成一次sessionid。 这个问题麻烦确认一下。