在JSP中注销时结束会话

时间:2015-08-31 03:35:41

标签: jsp session

以下是我的导航栏,其中包含该页面的退出按钮。

我想在用户点击退出按钮时结束会话。

我通过Google搜索找到了示例代码,并为我的代码添加了代码,但是代码显示错误。(检查屏幕截图中的错误)

<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">

  <ul class="nav navbar-nav navbar-right">
      <li class="dropdown">
      <a href="#" class="dropdown-toggle" data-toggle="dropdown">Hi, <%=session.getValue("Username") %><b class="caret"></b></a>
      <ul class="dropdown-menu">
        <li align="center" class="well">

            <a href="index.jsp" class="btn btn-sm btn-default"><span class="glyphicon glyphicon-log-out"></span> Logout</a>
            <%
            session.invalidate();
            response.sendRedirect("index.jsp");
            %>
        </li>
       </ul>
    </li>
  </ul>
</div><!-- /.navbar-collapse -->

帮我修改此代码..

enter image description here

2 个答案:

答案 0 :(得分:1)

默认情况下,如果会话不可用,则会按容器为您创建会话。对于JSP使用以避免创建新会话:

<%@ page session="false" %>

在访问session变量之前,请检查session(如果不可用)。如果没有会话,如果我们调用session object方法,则会引发IlleagalStateExcetion

   <% if (session!=null) {%>
     <%=session.getValue("Username") %><b class="caret"></b></a>
   <% } %>

每次加载页面时,会话都会失效,而不会点击Logout。因此,点击Logout将单独的页面添加到invalidate the session

这里我将其用作logout.jsp,它包含会话失效代码:

 <!-- For not creating new session -->
 <%@ page session="false" %>

 <body>
     <%
     // for checking the session is available or not, if not available it will throw exception, "Session already invalidated."
      if (sesssion!=null) {
        session.invalidate();
        response.sendRedirect("index.jsp");
      }
     %>
 </body>

最后更改Logout链接,如下所示:

<a href="logout.jsp" class="btn btn-sm btn-default"><span class="glyphicon glyphicon-log-out"></span> Logout</a>

试一试:)

答案 1 :(得分:1)

问题是在单击注销链接之前您的会话已被终止。同样在jsp页面中会话是自动创建的。在访问session中的任何属性时,您需要注意这一点。请按照Srinu建议的步骤进行操作。