一尘不染

使用sendredirect在Java中保留会话

jsp

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

sess.setAttribute("username",oName);

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

response.sendRedirect("student.jsp");

它删除了会话变量。我需要一种方法来保留会话变量并移至student.jsp。我尝试使用forwading,但没有成功。

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

            if (dispatcher != null) {
                dispatcher.forward(request, response);
            }

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


阅读 257

收藏
2020-06-08

共1个答案

一尘不染

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

此cookie或URL参数应由servlet容器添加,而不必自己添加。

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

2020-06-08