阻止表单重复提交的办法以及支付成功后页面后退重复提交的解决方案

首先,是解决表单重复提交得问题,解决方法是重定向。http://www.cnblogs.com/zeussbook/p/8919684.html

然而顾客在购买商品成功之后,后退到订单提交 或者 订单支付的页面再次提交请求怎么办呢?

1. 首先,订单提交跳转到订单支付成功页面,重定向,那么订单信息肯定是存在session中,model是不行的。

2.在后台订单支付成功之后,要删除session中得订单信息。

3.再次回退上一个页面,获取session中得订单信息,就会报一个空指针,我们只需要捕获这个空指针,在session中保存一个提示信息:

  catch (NullPointerException n){ 

    request.getSession().setAttribute("error","操作已执行,请务重复提交!");

  }

4.在jsp页面中,添加一个隐藏值保存空指针返回得提示信息。

  <input type="hidden" id="error" value="${error}">

5.在js中加载时获取这个隐藏值,不为空则弹出提示框,跳转到指定页面

  ini();

     function ini(){

    var error=$("#error").val();

        if(error!="" && error!=undefined){

        changeDLGContent(error);
openYesOrNoDLG();
$('#yes').click(function () {
cancleBtn();
window.location.href=path+"/static/index";
});
}
}
6.在jsp页面加载完成之后,要删除session中得这个值,避免下一次正常提交被阻止。用JSP小脚本删除。
<%
if(null!=session.getAttribute("error")){
session.removeAttribute("error");
}
%>
效果如下:





原文地址:https://www.cnblogs.com/zeussbook/p/8968032.html