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

每次登录成功时创建新会话在Javaservlet中无法正常工作,java,session,servlets,Java,Session,Servlets,我有一个jsp索引页面,其中包含3个按钮(以用户身份登录、注册、以管理员身份登录)。每当用户选择其中一个选项时。它将重定向到loginservlet(通过http表单),从loginservlet我可以检查登录数据,如果数据有效,则初始化新会话。但是,当我使用SessionListener检查新用户注册或登录时是否创建了新会话时,我总是获得相同的会话id 下面是loginServlet中的函数 private void initSession(HttpServletRequest req

我有一个jsp索引页面,其中包含3个按钮(以用户身份登录、注册、以管理员身份登录)。每当用户选择其中一个选项时。它将重定向到loginservlet(通过http表单),从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());
    }
}
当我打开newindex.jsp页面以便登录或注册时,我没有得到一个新会话(我可以在日志中看到它)。我不能理解的一件事是,当我启动服务器时,我会立即得到一个新的会话id。 我ḿ servlet中的新特性。请帮帮我


谢谢

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


我知道这个功能。当用户单击manager.jsp和user.jsp网页上的注销按钮时,我也调用此函数。但这里的想法是,当我打开new index.jsp并成功登录或创建新用户时,我需要新会话,并且使用session.getSession()我总是在日志中看到一个会话。所以实际上没有创建新会话