1

我对 GAE/J 开发和尝试使用 GAE Seesion 相当陌生。不知何故,当我尝试检索存储在会话中的值时,它只返回 null。这就是我所拥有的。

我有 loginservlet,我在其中将 String 变量设置为会话。

HttpSession hs=req.getSession(true);
if(hs.isNew()){
hs.setAttribute("logininfo", "mylogininfo");
}

然后我尝试在 JSP 页面中检索此信息,如下所示 -

<%
HttpSession hs = request.getSession(false);
String logininfo = (String) hs.getAttribute("logininfo");
%>

我总是将“logininfo”字符串设为空 - 不知道为什么。

我在 appengine-web.xml 中启用了会话

<sessions-enabled>true</sessions-enabled>

以上只是我尝试运行的一个试用示例,我真的想将 'accessToken' 从 servlet 传递到 JSP 页面以进行 facebook 登录。

4

1 回答 1

1

我不知道您的页面以什么顺序被调用,但最可能的罪魁祸首是isNew()方法的使用。

当服务器向用户浏览器发送 cookie 时,会话建立。这发生在任何页面的第一次请求,授权或非授权。

因此,isNew()仅在对您的任何页面的第一次请求时才成立,而用户尚未收到任何 cookie。在任何连续的请求中(甚至几天后,取决于Cookie Expiration:GAE 管理员中的设置),它将是错误的。

于 2012-05-23T04:45:37.670 回答