日期:2014-05-17  浏览次数:20691 次

jsp页面重复刷新问题
怎么防止页面被重复刷新,我做了一个购物车,往里面添加商品,但是我刷新一次就会自动增加一个商品,怎么防止页面重复提交?前辈们,急急急

------解决方案--------------------
客户端与服务端:
客户端使用JS变量,服务端使用session变量
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
//设置标志变量SubmitFlag值
session.putValue("SubmitFlag","announce_add.jsp"); 
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'index.jsp' starting page</title>
<script type="text/javascript">
submitF = function(){
var submitFlag = false;
if(submitFlag){
window.alert("禁止重复提交!");
}
submitFlag = true;
document.forms[0].submit();
}
</script>
</head>
  
<body>
<form action="" id="mform">
<input type="file" name="myphoto" id="myphoto" value="选择图片"/>
<input type="submit" value="提交" onclick="submitF()"/>
</form>
</body>
</html>

PageFlag=(String) session.getValue("SubmitFlag");
if (PageFlag.equalsIgnoreCase("Over")){
System.out.println("不能重复提交页面!"); 
return "repeatSubmit";
}
//设置标志变量SubmitFlag值为Over,表示已经提交
session.putValue("SubmitFlag","Over");
------解决方案--------------------
##############################
PageFlag=(String) session.getValue("SubmitFlag");
 if (PageFlag.equalsIgnoreCase("Over")){
 System.out.println("不能重复提交页面!");
return "repeatSubmit";
 }
 //设置标志变量SubmitFlag值为Over,表示已经提交
session.putValue("SubmitFlag","Over");
##############################

此段代码是服务端防重复提交,放在servlet(包括struts的action)中
------解决方案--------------------
探讨

你用的是struts2么,如果是的话问题在于result那里你是用的请求转发,改成重定向就可以了type=redirect