JSP会话仅在一个页面上工作

时间:2014-07-21 11:31:25

标签: java jsp session servlets

我有问题。用户登录后,他被重定向到index.jsp:

if(loggedIn){
    request.setAttribute("login", signum);
    request.getRequestDispatcher("index.jsp").forward(request, response);
    }

一切都像魅力index.jsp一样显示在屏幕的右上角我有一个小菜单,其中包含登出底部和用户名链接。当用户点击该链接时,他将被重定向到个人资料页面。

问题是,当他点击该链接时,他被重定向到那里,但是在退出按钮旁边就没有像会话丢失那样。 这是会话和小菜单的代码:

<li>
            <% session.setAttribute( "username", request.getAttribute("login") ); %>
                <a id='loginLink' href='/logout.jsp' onclick='return logout();'>Logout</a> <span id='user'><a href='userProfile.jsp'>${login}</a></span>
            </li>

请注意,我使用${login}而不是session.getAttribute("username")),但存在同样的问题。此菜单包含在每个页面上:<jsp:include page="menu.jsp" /> 请告诉我我做错了什么我认为如果菜单包含在所有页面中会话应该存储并在所有页面上共享?

1 个答案:

答案 0 :(得分:0)

您应该在登录servlet中的会话中编写userid,而不是在菜单中。如果没有,您将使用请求的username属性擦除会话login属性...这仅存在于登录页面中!

您应该在loginServlet中执行:

if(loggedIn){
    // eventually : HttpSession session = request.getSession();
    session.setAttribute("username", signum);
    request.getRequestDispatcher("index.jsp").forward(request, response);
}

然后在您的菜单中:

<li>
    <a id='loginLink' href='/logout.jsp' onclick='return logout();'>Logout</a> <span id='user'><a href='userProfile.jsp'>${username}</a></span>
</li>