避免表单的重复提交

表单的重复提交
1.重复提交的情况:
1).在表单提交到一个Servlet,而Servlet又通过请求转发的方式响应了一个JSP(HTML)页面,
此时地址栏还保留着Servlet的那个路径,在响应页面点击“刷新”
2).在响应页面没有到达时重复点击“提交按钮”
3).点击“返回” , 再点击“提交”
2.不是重复提交的情况:
点击 “返回”,“刷新”了原表单页面, 再提交。
 

3.如何避免表单的重复提交:

在表单中做一个标记,提交到Servlet时,检查标记是否存在且是否和预定义的标记一致,

若一致,则受理请求,并销毁标记,若不一致或没有标记,则直接响应提示信息:“重复提交”。
1).仅提供一个隐藏域:<input   type="hidden" name="token"  value="token11"   />
  行不通:没有方法清除固定的请求参数。
2).把标记放在request中,  行不通,因为表单页面刷新后,request已经被销毁,再提交表单是一个新的request。
3).把标记放在session中。可以!!!!
-在原表单页面,生成一个随机值token(如:时间)
-在原表单页面,把token值放入session属性中
-在原表单页面,把token值放入到隐藏域中。

-在目标的Servlet中:获取session和隐藏域中的token值
-比较两个值是否一致:若一致,受理请求,且把session域中的token属性清除
-若不一致,则直接响应提示页面:“重复提交”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值