使用sendredirect在Java中保留会话

9 java jsp servlets jspinclude java-ee

我正在JAVA中创建一个登录应用程序.我正在JSP中进行演示,并在Servlet中进行所有逻辑(数据库连接)[这不是我知道的正确方法].我检查Servlet中的用户名密码,然后创建一个会话变量.并添加这样的会话

sess.setAttribute("username",oName);
Run Code Online (Sandbox Code Playgroud)

然后我将用户重定向到其主页,名为student.jsp

response.sendRedirect("student.jsp");
Run Code Online (Sandbox Code Playgroud)

它删除了会话变量.我需要一种方法来保存会话变量并转移到student.jsp.I尝试使用转发但是没有成功.

RequestDispatcher dispatcher =
                getServletContext()
                    .getRequestDispatcher("/student.jsp");

            if (dispatcher != null) {
                dispatcher.forward(request, response);
            }
Run Code Online (Sandbox Code Playgroud)

它转发请求,但页面地址不会更改为student.jsp,这是不好的.感谢您对此方面的任何帮助表示感谢

Akb*_*hry 5

对于重定向的请求返回并附加到同一会话,它需要一个会话ID,通常在JSESSIONID(或其他名称)cookie中或作为参数在URL中携带.

这个cookie或URL参数应该由servlet容器添加,您不必自己添加它.

如果您没有在浏览器中看到cookie,并且没有将JSESSIONID附加到URL,那么它将为每个请求创建一个新会话,而不是附加到同一会话.