当前位置: 技术问答>java相关
求最简单有效的方法---jsp如何限制同一表单被多次提交,用struts可以做到吗
来源: 互联网 发布时间:2015-06-09
本文导语: 求最简单有效的方法---jsp如何限制同一表单被多次提交,用struts可以做到吗 | 典型的做法是所谓的令牌系统,为每个可能提交的窗体放一个唯一的id(所谓令牌,比如放在hidden里),服务器端...
求最简单有效的方法---jsp如何限制同一表单被多次提交,用struts可以做到吗
|
典型的做法是所谓的令牌系统,为每个可能提交的窗体放一个唯一的id(所谓令牌,比如放在hidden里),服务器端(session)有一个令牌队列,存放所用提交过的窗体,每次收到提交上来的窗体,把它的令牌和队列中已经存在的令牌进行比较,判断合法性。
|
用js来解决吧
第一种方法
onclick之后把提交表单的button disabled掉,这样就没办法点了
,这个方法有bug就是,选中表单中任意一项,通过回车提交表单还是可以的,
part_time(helpme) 的方案也存在这个问题
第二种方法
onclick之后用dhtml在页面上放一个透明的div,让用户没办法选中表单项,bug是一开始就用回车提交
第三种方法
用dthml的behavior给form附着一个htc,在htc中保证表单提交前,都会放div,这种方法比较复杂,要对js很熟悉
nielinjie的方法有一个问题,表单不能重复提交是指这个表单正在提交的过程中不能再一次提交,如果这个表单信息已经被提交,回复的消息已经到客户端了,这个表单当然可以再提交拉,那么你什么时候去清空那个session,什么时候去加令牌呢?,如果在信息还没有传到服务器,又提交了一次怎么办?
ps,顺便说一句,jarkata的struts不能解决这个问题
第一种方法
onclick之后把提交表单的button disabled掉,这样就没办法点了
,这个方法有bug就是,选中表单中任意一项,通过回车提交表单还是可以的,
part_time(helpme) 的方案也存在这个问题
第二种方法
onclick之后用dhtml在页面上放一个透明的div,让用户没办法选中表单项,bug是一开始就用回车提交
第三种方法
用dthml的behavior给form附着一个htc,在htc中保证表单提交前,都会放div,这种方法比较复杂,要对js很熟悉
nielinjie的方法有一个问题,表单不能重复提交是指这个表单正在提交的过程中不能再一次提交,如果这个表单信息已经被提交,回复的消息已经到客户端了,这个表单当然可以再提交拉,那么你什么时候去清空那个session,什么时候去加令牌呢?,如果在信息还没有传到服务器,又提交了一次怎么办?
ps,顺便说一句,jarkata的struts不能解决这个问题
|
function mySubmit() {
if (document.form1.submitFlg == 0) {
document.form1.submit();
document.form1.submitFlg == 1;
}
}