欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

防止表单重复提交的几种方法总结

程序员文章站 2023-12-10 23:01:46
防止表单重复提交的几种方法总结 1、javascript防止表单重复提交(主要用于网络延迟情况下用户点击多次submit按钮导致表单重复提交) 在页面中,添加javascript代码来防止表单的重复...

防止表单重复提交的几种方法总结

1、javascript防止表单重复提交(主要用于网络延迟情况下用户点击多次submit按钮导致表单重复提交)

在页面中,添加javascript代码来防止表单的重复提交。主要是针对在网络延迟情况下用户有时间点击多次submit按钮导致表单重复提交,使用javascript控制form表单只能提交一次。

2、将提交按钮设置为不可用,让用户点击第一次提交之后,没有机会点击第二次提交按钮的机会。(也可以将提交按钮隐藏起来,在点击第一次之后,将提交按钮隐藏起来)

function ubmit() {

//获取表单提交按钮

var btnsubmit = documen.getelementbyid(“sumit”);

//将表单提交按钮设置为不可用,可以避免用户再次点击提交按钮进行提交

btnsubmit.disabled = “disabled”;

//返回true让表单可以提交

return true;

}

3、利用session防止表单重复提交(主要用于表单提交之后,点击刷新按钮导致表单重复提交,以及点击浏览器返回按钮退回到表单页面后进行再次提交)

(1)、表单页面由servlet程序(服务器端)生成,servlet为每次产生的表单页面分配一个唯一的随机标识号(token令牌),并在form表单的一个隐藏字段中设置这个标识号,同时在当前用户的session域中保存这个标识号。

(2)、当用户提交form表单时,负责处理表单提交的serlvet得到表单提交的标识号,并与session中存储的标识号比较,如果相同则处理表单提交,处理完后清除当前用户的session域中存储的标识号。如果不一致,就是重复提交了,此时服务器端就可以不处理重复提交的表单了。

(3)、服务器程序将拒绝用户提交的表单请求情况如下:

1):存储session域中的表单唯一的标识号与表单提交的标识号不同

2):当前用户的session中不存在表单标识号

3):用户提交的表单数据中没有标识号字段

(4)、创建标识号

string token = tokenproccessor.getinstance().maketoken();

(5)、在服务器端使用session保存标识号

request.getsession().setattribute(“token”,token);

(6)、在form表单中也就是jsp页面中,使用隐藏域来存储标识号(token令牌)

(可以使用el表达式取出存储在session域中的token)

<%--

”>

--%>