今天第十三天,给我们上课的是吴老师,他为我们讲解了防止重复提交,验证码,文件的上传和下载。
防止重复提交
重复提交的体现有三种:
1. 由于服务器缓慢或网络延迟的愿意重复点击提交按钮
2. 已经提交成功,重复刷新页面造成的重复提交
3. 提交成功,但是回退又点击了提交造成的重复提交
以下不是重复提交:
回退后,有刷新页面,不是重复提交,而是重新发送了一次请求。
在firefox下,重复提交到同一地址是无效的,而IE浏览器则有效
那么我们怎么解决重复提交呢?
当我们使用request.getRequestDispatcher.forward()转发是,浏览器所保留URL是先前提交表单的地址,此时重复刷新时会造成表单的重复提交。解决方法:1.使用HttpServletResponse.sendRedirect()跳转的方式,浏览器所保留URL地址是所跳转的地址。2.使用javaScript语言,在页面定义一个boolean类型的全局变量,用来判断表单是否是第一次提交,如果是则页面的按钮点击提交无效,并且按钮不能被点击。
以上两种方式:都能解决forward造成的重复刷新页面造成的重复提交,但是不能解决回退造成的重复提交。
4. 利用session来防止重复提交:服务程序在form表单的一个隐藏字段中设置一个标识,在当前用户的Session中保存这个一个标识。当用户提交Form表单时,负责接收这一请求的服务器程序比较form表单隐藏字段中的标识号与存储在当前用户的Session域中的标识是否相同,如果相同则处理表单数据&