本文摘自《深入java web技术内幕》
在网站中有许多地方都存在表单重复提交的问题,比如在用户网速慢的情况下可能会重复提交表单,或者是恶意用户通过程序来发送恶意请求等等,这时都需要设计一个防止表单重复提交的机制
要防止表单重复提交,就要标志用户的每一次访问请求,使得每一次访问对服务端来说都是唯一确定的,为了标志用户的每次访问请求,可以再用户请求一个表单域时增加一个隐藏表单项,这个表单项的值每次都是唯一的token
<form id="form" method="post">
<input type=hidden name="token" value="xxx"/>
</form>
当用户请求时生成这个唯一的token时,将这个token保存在用户的Session中,等用户提交请求时检查这个token和当前的Session中保存的token是否一致,如果一致则说明没有重复提交,否则用户提交上来的token已经不是当前这个请求合法的token