我使用jsp编写应用程序,并且遇到这样的问题,浏览器将始终缓存我执行的URL,因此当用户刷新页面时,操作将再次执行。 例如: “>转移; 如果我点击链接,然后刷新页面,此操作将再次执行。 我也知道,我需要用它来避免这个问题,但这真的不方便。
任何人都有更好的解决方案吗? 任何建议将不胜感激。 提前谢谢。
答案 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>