用户重复提交

用户重复提交
第一种方法: Js中防止

导致请求处理延迟的原因有很多:
· 网络负荷过重。
· 数据库瓶颈可能延长服务器端的处理时间。
· 等待Web服务器处理的请求数量太多。
如果请求处理延迟是由于上述原因之一造成,重新提交请求只会把事情搞得更糟。一些Web开发者强调说他们在服务器上运行的代码很健壮,即使用户多次提交同一请求,服务器端代码也能够保证只有一个记录会被插入数据库。也许这能够避免出现错误,然而,这是解决问题的最好方法吗?
二、为什么多次请求可能导致问题? 
HTTP是一种无状态的协议。无论是Web服务器还是Web客户端,都不会维持会话状态信息。当你点击一个链接或者提交一个表单,浏览器建立了与服务器之间的一个连接,提交请求,读取应答,接着服务器和浏览器都会关闭这个连接。对于每一个请求,浏览器都要建立与服务器的一个新连接;每一个浏览器实例每次只使用一个连接。
因此,如果用户一次又一次地点击“提交”按钮,他们实际上是在:建立与Web服务器的连接,提交请求,然后在不等待服务器回应的情况下立即关闭与服务器的连接。服务器忠实地处理这些重复的请求,但由于客户端已经中断了连接,服务器不知道如何才能返回结果,因此它就丢弃处理结果。这不仅浪费了宝贵的服务器资源,而且延长了服务器的请求队列——甚至还有可能导致服务器故障。
解决这个问题要从两方面进行:第一,防止用户重复提交请求;第二,给用户足够的提示信息,使他们不再感到有重复提交请求的必要。幸运的是,我们可以用JavaScript同时解决这两方面的问题。
三、简单的JavaScript解决方案 
不要直接提交请求,而是编写一个提交请求的JavaScript。在提交请求之前,JavaScript脚本首先检查用户是否已经提交了同样的请求。

  
这些JavaScript禁止用户多次提交同一请求。只要在每个页面中加入上面这些简单的JavaScript代码,你就能够确保用户只提交一次请求。



第二种: 在js的 mate加
1 在你的表单页里HEAD区加入这段代码:
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">




验证码


改变一些代码之后:

能学习 ByteArrayOutputStream  和ServletOutputStream的联系

猜你喜欢

转载自zhaoyan-xi.iteye.com/blog/2037671