首先,是解决表单重复提交得问题,解决方法是重定向。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");
}
%>
效果如下: