session实现防止重复提交,以及验证
参考文档
1.生成Token的参考文档.http://www.cnblogs.com/TianFang/p/3180899.html
2.主要参考文档.http://www.cnblogs.com/xdp-gacl/p/3859416.html
实验的思路在js页面用在一个循环中执行多次post请求,然后看后来的输出
相关代码
controller里面
@RequestMapping(value = "/savebook")
public void saveBook(HttpServletRequest request,HttpServletResponse response)
{
//logger.info("into saveBook");
boolean isrepeatSubmit = bookService.isRepeatSubmit(request);
//如果是重复提交应该如何处理,不加入数据就可以了不要return null,return会使页面报异常
if(isrepeatSubmit)
{
logger.info("is repeat submit");
}
else
{
logger.info("first submit");
}
}
isRepeatSubmit方法
@Override public boolean isRepeatSubmit(HttpServletRequest request) { String clientToken = request.getParameter("token"); String serverToken = (String) request.getSession().getAttribute("token"); if (clientToken == null) { return true; } if (serverToken == null) { return true; } if(!serverToken.equals(clientToken)) { return true; } request.getSession().removeAttribute("token"); return false; }
上面的代码一定要注意最后在返回false之前 ,要把token从session中去除
js中的代码
<script type="text/javascript"> window.onload = function(){ //alert("123"); //var saveUrl = "http://localhost:8080/springMVC/savebook"; //${basePath}book_save" var saveUrl = '${basePath}savebook'; var i= 0; for(;i<5;i++) { sendSaveRequest(saveUrl); } } function sendSaveRequest (saveUrl){ $.post( saveUrl, {"token":$("#token").val()}, function() { return; }, "text" ); }
十二月 12, 2015 3:16:16 下午 app05a.controller.BookController saveBook 信息: first submit 十二月 12, 2015 3:16:16 下午 app05a.controller.BookController saveBook 信息: is repeat submit 十二月 12, 2015 3:16:16 下午 app05a.controller.BookController saveBook 信息: is repeat submit 十二月 12, 2015 3:16:16 下午 app05a.controller.BookController saveBook 信息: is repeat submit 十二月 12, 2015 3:16:16 下午 app05a.controller.BookController saveBook 信息: is repeat submit 十二月 12, 2015 3:31:18 下午 app05a.controller.BookController saveBook 信息: first submit 十二月 12, 2015 3:31:18 下午 app05a.controller.BookController saveBook 信息: is repeat submit 十二月 12, 2015 3:31:18 下午 app05a.controller.BookController saveBook 信息: is repeat submit 十二月 12, 2015 3:31:18 下午 app05a.controller.BookController saveBook 信息: is repeat submit 十二月 12, 2015 3:31:18 下午 app05a.controller.BookController saveBook 信息: is repeat submit
上面是运行结果
学好计算机,走遍天下都不怕