【发布时间】: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