【问题标题】:Can't get the session in java servlet无法在 java servlet 中获取会话
【发布时间】:2011-10-15 23:44:32
【问题描述】:

我是第一次使用 servlet,但我取得了很大的进步。我的 servlet 运行良好。所以我决定建立一个身份验证机制,如果用户提供正确的密码和 ID,它会创建一个会话。但会议对我来说是全新的。所以我不太遵循逻辑,但我已经开始理解了。

正如我之前提到的,我的一个 servlet 专用于登录。如果密码正确,则会创建一个会话(我不在会话中存储任何对象/数据)并通知客户端(remoteUser)密码已被接受并创建会话。客户端所做的是访问同一应用程序中的任何其他 servlet。其他 servlet 获取会话以检查它是否已创建且有效(未超时)。为此,我在其他 servlet 中获得了以下会话:

HttpSession session = req.getSession(false); //false because this is not the place to create a session. sessions should only be created in the login servlet.

但这会返回一个空值。所以我试过了:

HttpSession session = req.getSession();

并使用 session.isNew(); 检查我这是一个新的会议。所以我在登录 servlet 中创建的会话不能用 req.getSession(); 调用。在另一个 servlet 中。

PS: 在登录 servlet 中创建会话时: session.setMaxInactiveInterval(300); //5 分钟

非常感谢您的任何回复!

【问题讨论】:

  • 你的客户端支持cookies吗?
  • 是的,我在同一台机器上使用 google chrome 打开 servlet。
  • 我的问题是,为什么我无法获得在另一个 servlet 页面(在同一个应用程序中)创建的旧会话?但多亏了 dosendoc,他的回答解决了我的问题。如果您不在 GAE 中启用会话,您不会收到任何错误,但您会遇到和我一样的问题。

标签: java google-app-engine session servlets


【解决方案1】:

使用 Google App Engine 时,您必须专门启用会话支持。见http://code.google.com/appengine/docs/java/config/appconfig.html#Enabling_Sessions

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 2013-07-16
    • 1970-01-01
    • 2013-12-06
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多