如何在jsp中刷新时阻止执行操作

时间:2009-08-24 07:13:09

标签: jsp post get

我使用jsp编写应用程序,并且遇到这样的问题,浏览器将始终缓存我执行的URL,因此当用户刷新页面时,操作将再次执行。 例如:    “>转移; 如果我点击链接,然后刷新页面,此操作将再次执行。 我也知道,我需要用它来避免这个问题,但这真的不方便。

任何人都有更好的解决方案吗? 任何建议将不胜感激。 提前谢谢。

3 个答案:

答案 0 :(得分:1)

您通常有一个隐藏的表单变量,它已在第一个请求中生成并保存到会话中。将其生成为随机数。

然后,在提交时,检查此隐藏字段,检查会话变量,如果匹配,则处理它,并删除会话变量。

因此,按回将导致表单中的相同变量,但在会话中被删除,因此您可以轻松地检测案例。

答案 1 :(得分:0)

您可以使用称为令牌的内容。在表单提交中包含令牌编号作为隐藏表单元素。生成页面时,将此随机标记添加到SESSIONS(在数组中)。现在,在表单提交时,检查SESSION数组中是否存在随机令牌,如果是,则删除它并继续。如果不是,则抛出错误。

答案 2 :(得分:0)

此解决方案适用于Internet Explorer。

<script type="text/javascript">
  document.onkeydown = function(){
     if(window.event && window.event.keyCode == 116){ // Capture and remap F5  
         window.event.keyCode = 505;  
     }
     if(window.event && window.event.keyCode == 505){ // New action for F5  
         return false;  // Must return false or the browser will refresh anyway  
    }  
}
</script>