一般造成表单多次重复提交的原因可以归纳成一下三个:
1如果使用转发的话 用户可以多次刷新页面导致多次的重复请求
–使用重定向解决
2因为网络延迟 用户点击完后没反应 导致多次重复点击 网络通畅后会收到很多次请求~
3用户成功提交后 回退浏览器记录 重新提交~
为了解决这几个重复提交的问题 可以用验证码解决 我们使用谷歌kaptcha验证码来讲解具体实现过程
1导入kaptcha jar包 使用KaptchaServlet配置谷歌用来生成验证码的Servlet程序 只要请求这个servlet就返回验证码的图片
2用img标签 src为该servlet的地址
3request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY)获取验证码
4request.getSession().removeAttribute(Constants.KAPTCHA_SESSION_KEY); 删除服务器端验证码
5比较验证码是否相同
有的浏览器会因为缓存导致验证码更新不了 ,我们可以使用如下方式进行切换:
js中声明图片的src为验证码Servlet的地址加一个随机化的参数~