每次登录成功时创建新会话在 Java Servlet 中无法正常工作



我有一个jsp索引页面,其中包含3个按钮(以用户身份登录,注册,以经理身份登录(。每当用户选择这些选项之一时。它将重定向到一个登录服务(通过http FORM(,从loginServlet,我可以检查登录数据并在数据有效时初始化新会话。但是,当我使用 SessionListener 检查新用户注册或登录时是否创建新会话时,我总是得到相同的会话 ID。

这是 loginServlet 中的函数

private void initSession(HttpServletRequest request, HttpServletResponse response, String sessionsTyp) {
// https://www.studytonight.com/servlet/httpsession.php
// Create Session if user-login or manager-login success
HttpSession session = request.getSession();
if (sessionsTyp.equals("userLogin") || sessionsTyp.equals("managerLogin")) {
if (sessionsTyp.equals("managerLogin")) {
session.setMaxInactiveInterval(10);
}
} else {   // Create Session if registry success
session = request.getSession(true);
}
// Storing user information in an attribute of Session. Username is unique therefore use username as sessionid
if (this.username != null) {
session.setAttribute(Constants.SESSION_USER_KEY, username);
} else {
session.setAttribute(Constants.SESSION_MANAGER_KEY, session.getId());
}
}

当我打开新索引.jsp页面以登录或注册表时,我没有获得新会话(我可以在日志中看到它(。我无法理解的一件事是,当我启动服务器时,我会立即获得一个新的会话ID。 我 ḿ 新在 servlet。请帮帮我。

谢谢

你应该调用session.invalidate(),它基本上会丢弃当前会话并解除绑定到它的任何对象。

https://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpSession.html#invalidate((

最新更新