以下是我的导航栏,其中包含该页面的退出按钮。
我想在用户点击退出按钮时结束会话。
我通过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 -->
帮我修改此代码..
答案 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
建议的步骤进行操作。