- 浏览: 132207 次
- 性别:
- 来自: 北京
最新评论
1 javascript ,设置一个变量,只允许提交一次。
<script language="javascript">
var checkSubmitFlg = false;
function checkSubmit() {
if (checkSubmitFlg == true) {
return false;
}
checkSubmitFlg = true;
return true;
}
document.ondblclick = function docondblclick() {
window.event.returnValue = false;
}
document.onclick = function doconclick() {
if (checkSubmitFlg) {
window.event.returnValue = false;
}
}
</script>
<html:form action="myAction.do" method="post" onsubmit="return checkSubmit();">
2 还是javascript,将提交按钮或者image置为disable
<html:form action="myAction.do" method="post"
onsubmit="getElById('submitInput').disabled = true; return true;">
<html:image styleId="submitInput" src="images/ok_b.gif" border="0" />
</html:form>
3 利用struts的同步令牌机制
利用同步令牌(Token)机制来解决Web应用中重复提交的问题,Struts也给出了一个参考实现。
基本原理:
服务器端在处理到达的请求之前,会将请求中包含的令牌值与保存在当前用户会话中的令牌值进行比较,看是否匹配。在处理完该请求后,且在答复发送给客户端之前,将会产生一个新的令牌,该令牌除传给客户端以外,也会将用户会话中保存的旧的令牌进行替换。这样如果用户回退到刚才的提交页面并再次提交的话,客户端传过来的令牌就和服务器端的令牌不一致,从而有效地防止了重复提交的发生。
if (isTokenValid(request, true)) {
// your code here
return mapping.findForward("success");
} else {
saveToken(request);
return mapping.findForward("submitagain");
}
Struts根据用户会话ID和当前系统时间来生成一个唯一(对于每个会话)令牌的,具体实现可以参考TokenProcessor类中的generateToken()方法。
1. //验证事务控制令牌,<html:form >会自动根据session中标识生成一个隐含input代表令牌,防止两次提交
2. 在action中:
//<input type="hidden" name="org.apache.struts.taglib.html.TOKEN"
// value="6aa35341f25184fd996c4c918255c3ae">
if (!isTokenValid(request))
errors.add(ActionErrors.GLOBAL_ERROR,
new ActionError("error.transaction.token"));
resetToken(request); //删除session中的令牌
3. action有这样的一个方法生成令牌
protected String generateToken(HttpServletRequest request) {
HttpSession session = request.getSession();
try {
byte id[] = session.getId().getBytes();
byte now[] =
new Long(System.currentTimeMillis()).toString().getBytes();
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(id);
md.update(now);
return (toHex(md.digest()));
} catch (IllegalStateException e) {
return (null);
} catch (NoSuchAlgorithmException e) {
return (null);
}
}
发表评论
-
Ubuntu 9.04中文件共享的设置
2009-09-01 11:36 1296在Ubuntu 9.04中,用新立德自动安装的方式安装了sam ... -
Java异常处理陋习
2009-08-11 13:51 811你觉得自己是一个Java专 ... -
JAVA程序员的好文章,程序迷途中的人来看
2009-08-11 13:47 855转自:http://hi.baidu.com/cf ... -
Java和JSP编程中应该注意的几个问题
2009-08-10 16:41 8841. 对应String类型的对 ... -
系统分析员、系统架构师、项目经理的区别
2009-08-10 09:41 1181转自:http://pm.csai.cn/mana ... -
LATEX使用之-字体颜色深浅不一
2009-03-13 16:31 5482今天用Ctex写论文,发现出来的pdf在屏幕上会出现字体颜色深 ... -
释放C盘空间的一种方法
2009-03-07 18:00 1015今天终于让C盘上可怜的500m的剩余空间变成了1G。 方法 ... -
T61 总蓝屏 错误代码为0X40000080
2009-03-06 21:30 3052这两天我的t61总是蓝屏,而且总是用的用的就速度巨慢。 今 ... -
windowXP 管理工具拒绝访问的解决方法
2009-03-06 21:25 2451我的电脑好一阵子都没有办法访问管理工具里的内容,除了ODBC。 ... -
数据库范式举例学习
2008-11-23 00:43 2670数据库太久没碰了,但笔试总是会碰上,没办法,现找些资料来学吧。 ... -
JAVA checkedException 与 uncheckedException
2008-11-22 23:35 2405今天笔试,遇到了一道题,问哪些exception是checke ... -
刚填完审协的在线职业测评
2008-10-23 16:18 2144刚刚填完审协的职业测评,分两部分,一部分是能力测试,和公务员的 ... -
SLB一面
2008-10-14 12:54 796刚从slb BGC的面试中回来 ... -
写申论的一点经验
2008-10-11 11:46 863避免《南周》化,着力《人报》化,总结一下给自己的几点警示: ... -
SLB活动日
2008-10-10 21:44 694刚从SLB活动日回来,人多啊………………,刚才系统死机,刚写的 ... -
面试官如何判断你是合适的人选(一位同事的review)
2008-10-10 16:10 2611http://forum.byr.edu.cn/wForum/ ... -
百度07在线笔试
2008-10-10 00:07 899一、 一个文本文档有多 ... -
网申的惨痛经历
2008-10-06 22:45 787过了七天的悠闲时光,今天一开始就是惨痛的一盆凉水从头到脚。 ... -
求职箴言
2008-09-26 12:39 757求职,最重要的是研究这个行业的游戏规则。其中一个重要规则就是, ...
相关推荐
JSP避免Form重复提交的三种方案.docx
JSP_重复提交_解决方法JSP_重复提交_解决方法JSP_重复提交_解决方法
jsp中实现重复提交详细
NULL 博文链接:https://feng5588feng.iteye.com/blog/1494002
JSP乱码 N种解决方案
一个Jsp两个ActionForm分别提交.rar一个Jsp两个ActionForm分别提交.rar一个Jsp两个ActionForm分别提交.rar一个Jsp两个ActionForm分别提交.rar一个Jsp两个ActionForm分别提交.rar
SSH笔记-数据验证、上传下载、避免表单重复提交、自定义拦截器
重复提交的分类: 1.由于网速原因而重复点击提交按钮 2.已经提交成功,然后又刷新页面重复提交 3.已经提交成功,然后点击后退,然后又重复提交。 重复提交的缺点: 1.加重了服务器的负担。 2.导致错误的操作。 实例...
jsp+servlet做的form表单各个元素的提交到后台处理再显示
jsp 重复提交问题
在一个jsp页面中,定义了一个用户登录界面(以form表单定义),但要达到检验输入的信息的合法性,就需要对输入的用户信息作判断,那么自然就需要取出其中的值。有的页面可以用action传参来得到form中输入的信息值,...
jsp表单的FORM传值
主要介绍了JSP针对表单重复提交的处理方法,涉及JSP基于session的重复提交判定使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
教学视频--JSP提交form乱码问题解决演示.rar
java开发时防止jsp刷新造成的重复提交 经测试完美
一个jsp页面中多个提交按钮提交不同的页面.zip