无法在Java Servlet中获取会话

6
我第一次使用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.

但是这返回了一个null。所以我尝试过:
HttpSession session = req.getSession();

经过session.isNew()检查,我发现这是一个新的会话。因此,在另一个servlet中,不能使用req.getSession()来调用我在登录servlet中创建的会话。

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

非常感谢您的任何回应!


2
你的客户端支持cookies吗? - Bozho
是的,我在同一台机器上使用谷歌浏览器打开Servlets。 - Genom
我的问题是,为什么我无法获取在另一个servlet页面(在同一应用程序中)创建的旧会话?但多亏了dosendoc,他的答案解决了我的问题。如果您不在GAE中启用会话,则不会收到任何错误,但您将遇到与我相同的问题。 - Genom
1个回答

5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接