使用sendredirect在Java中保留会话

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

sess.setAttribute("username",oName); 

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

 response.sendRedirect("student.jsp"); 

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

 RequestDispatcher dispatcher = getServletContext() .getRequestDispatcher("/student.jsp"); if (dispatcher != null) { dispatcher.forward(request, response); } 

它转发请求,但页面地址不会更改为student.jsp,这是不好的。 任何有关这方面的帮助将不胜感激谢谢

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

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

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

尝试编辑tomcat context.xml文件并将标记替换为 ,这对我有帮助。

使用RequestDispatcher并使用request.setAttribute()设置username变量。 在这种情况下,调度程序不会创建新请求,但会使用forward()方法转发相同的请求。