如何处理退出后点击“返回”按钮的用户

时间:2011-12-20 09:13:28

标签: javascript jsp servlets javascript-events back-button

我在网页上点击“提交”按钮时显示“您尚未登录”的消息。当然,对于已登录的用户,我希望显示该消息。我用这种方式编码:

<c:if test="${someCondition}">
addMsgToButtonEvent();
</c:if>

它(几乎)完美无缺。但是,现在当用户登录并且:

  1. 点击退出(位于我的标题中并重定向到另一页)
  2. 点击浏览器上的“返回”按钮
  3. 由于我的页面未再次呈现,因此未显示该消息,未调用addMsgToButtonEvent。我知道我可以通过清除历史来阻止“后退”按钮 - 但这会在业务需求上发生太大变化。这是一个关于这个问题的一些软性和有效的解决方法吗?


    编辑:

    我认为解决此类问题的最佳方法是在退出后使会话无效。我是这样做的。

2 个答案:

答案 0 :(得分:3)

我在ASP.Net网站和登录控件方面遇到了类似的问题。

您可以向HTML添加元标记以告知浏览器不要缓存它 - 因此后退按钮将导致页面从服务器正确重新加载:

<meta http-equiv="CACHE-CONTROL" content="NO-CACHE">
<meta http-equiv="EXPIRES" content="0">

希望这可能有所帮助:)

答案 1 :(得分:0)

如果缓存有问题,请将以下行添加到JSP的顶部

<%
response.setHeader("Cache-Control","no-cache no-store"); //HTTP 1.1
response.setHeader("Pragma","no-cache"); //HTTP 1.0
response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
%>

如果这不能解决问题...您可能想看看如何处理显示代码和会话失效。

最佳方法是:

创建会话时,请指定命名属性 为了打印语句,检查是否存在命名属性 如果找到命名属性...打印消息否则不要这样做 注销时...执行session.invalid()

让我知道什么有用...我们可以深入研究这个