传智播客学习日记Day13

这篇学习日记详细介绍了防止重复提交的几种情况和解决方案,包括利用session和验证码的方法。同时,文章还探讨了文件上传的<form>元素设置、multipart/form-data编码以及两种上传方式。对于文件下载,讲解了隐藏真实地址、动态确定下载内容的安全控制,以及通过设置HTTP报头实现文件下载的原理。
摘要由CSDN通过智能技术生成

今天第十三天,给我们上课的是吴老师,他为我们讲解了防止重复提交,验证码,文件的上传和下载。

防止重复提交

重复提交的体现有三种:

1.      由于服务器缓慢或网络延迟的愿意重复点击提交按钮

2.      已经提交成功,重复刷新页面造成的重复提交

3.      提交成功,但是回退又点击了提交造成的重复提交

以下不是重复提交:

回退后,有刷新页面,不是重复提交,而是重新发送了一次请求。

在firefox下,重复提交到同一地址是无效的,而IE浏览器则有效

那么我们怎么解决重复提交呢?

当我们使用request.getRequestDispatcher.forward()转发是,浏览器所保留URL是先前提交表单的地址,此时重复刷新时会造成表单的重复提交。解决方法:1.使用HttpServletResponse.sendRedirect()跳转的方式,浏览器所保留URL地址是所跳转的地址。2.使用javaScript语言,在页面定义一个boolean类型的全局变量,用来判断表单是否是第一次提交,如果是则页面的按钮点击提交无效,并且按钮不能被点击。

以上两种方式:都能解决forward造成的重复刷新页面造成的重复提交,但是不能解决回退造成的重复提交。

4.      利用session来防止重复提交:服务程序在form表单的一个隐藏字段中设置一个标识,在当前用户的Session中保存这个一个标识。当用户提交Form表单时,负责接收这一请求的服务器程序比较form表单隐藏字段中的标识号与存储在当前用户的Session域中的标识是否相同,如果相同则处理表单数据&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值