jsp页面重复刷新问题 怎么防止页面被重复刷新,我做了一个购物车,往里面添加商品,但是我刷新一次就会自动增加一个商品,怎么防止页面重复提交?前辈们,急急急 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以使用ajax提交,也可以在提交完成后,跳转到其它页面,然后再跳转回来。 你用的是struts2么,如果是的话问题在于result那里你是用的请求转发,改成重定向就可以了type=redirect 客户端与服务端:客户端使用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)中 jsp那本黄色的书上有,叫精通JSP Web开发什么的.... token或者页面加上当前的时间做参数,就不会重复刷新了 我不知道你是想要用哪种方式,如果你已经学过struts2的话可以用3楼说的做,如果你学了struts1可以用2楼说的token做,或者这样做,在struts1的Action里跳转到另一个方法,然后再跳转到jsp页面,这样比token跟简单,也容易理解public class UserAction extends DispatchAction { //这是你从jsp页面跳转进来的 public ActionForward add(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { //添加代码 return new ActionForward("/shopCar.do?add2",true); } //这是你的一个中间方法,这个方法已经失去了request,response,所以能避免重复添加 public ActionForward add2(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { //添加代码 return new ActionForward("/shopCar.do?add2"); }}如果你都没学,只是学了<%%>也可以用一个中间页面做处理,在中间页面把request跟response失去,这样就不会重复添加了! 新手要制作一个小型购物车系统,求助大侠们。。。。 j2EE的简单web开发 远程控制工具pcanywhere 的问题 谁懂jhtml? jsp时间问题 spring 入门新手求救:SimpleUrlHandlerMapping映射问题 在线求助,去掉JAVA字符串中间的换行 MySql 5.1.6中文字段的问题! jsp 简单问题 IOS设备访问有DWR推送功能的WEB页面时加载速度很慢 新手上路 foreach得一些代码不懂 SSH框架实现分页的问题,高手们指导一下!!
客户端使用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)中
public class UserAction extends DispatchAction {
//这是你从jsp页面跳转进来的
public ActionForward add(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
//添加代码
return new ActionForward("/shopCar.do?add2",true);
}
//这是你的一个中间方法,这个方法已经失去了request,response,所以能避免重复添加
public ActionForward add2(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
//添加代码
return new ActionForward("/shopCar.do?add2");
}
}如果你都没学,只是学了<%%>
也可以用一个中间页面做处理,在中间页面把request跟response失去,这样就不会重复添加了!