【问题标题】:Google app engine sessions now supported?现在支持 Google 应用引擎会话吗?
【发布时间】: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 在用户交互的整个生命周期中存储登录的用户对象?谢谢

标签: java google-app-engine


【解决方案1】:

会话支持是 GAEJ 开箱即用的功能。

您可以编写一个登录 servlet,将您的用户存储在会话中:

HttpSession session = request.getSession();
if(ProvidedUserParametersAreOK){
   session.setAttribute("user", "name");

然后,在您的调度程序 servlet 中编写这样的控件:

HttpSession session = request.getSession(false);
 if (session.getAttribute("user") != null){
    User user=(User)session.getAttribute("user");
    //user logged in 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 2011-12-26
    相关资源
    最近更新 更多