【发布时间】:2010-04-20 13:17:24
【问题描述】:
我认为谷歌应用引擎不支持会话(我上次检查是几个月前)。现在我再次搜索它并看到了这个:
http://code.google.com/appengine/docs/java/config/appconfig.html#Enabling_Sessions
表示支持:
javax.servlet.http.HttpSession
这是否意味着我们现在有了 servlet 会话支持?如果是这样,有没有人有使用这个的例子?我想创建自己的 User 类并支持用户登录和会话管理(我知道应用引擎已经为 google 用户支持此功能,但希望我自己的用户满足各种要求)
谢谢!
------------ 更新 ---------------------------------- ---------
我把它放在我的 GreetingServiceImpl 中,只是为了试一试:
public void login(String username, String password) {
HttpSession session = getThreadLocalRequest().getSession(false);
session.setAttribute("username", username);
}
然后我尝试在我的浏览器中刷新页面后,查看是否可以在我的登陆 jsp 页面中发现会话:
<body>
<%
String username = null;
HttpSession mysession = request.getSession(false);
if (mysession.getAttribute("username") != null) {
username = (String)mysession.getAttribute("username");
}
%>
但似乎jsp页面无法解决用户已登录的事实。如果可能的话,我希望能够在用户刷新时确定用户在登录页面上已登录。
谢谢
------------ 更新 2 --------------------------------- ----------
有效,
谢谢
【问题讨论】:
-
如果您使用像 GWT 这样的客户端或更丰富的纯 HTML 客户端,您可以使服务器端无状态并摆脱笨拙的会话机制。
-
怎么样?您的意思是用户登录状态仅存储在客户端上?就像在 GWT 中一样,只有一个“页面”,在 url 之间没有切换 - 所以 javascript 在用户交互的整个生命周期中存储登录的用户对象?谢谢