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

上面是运行结果

原文地址:https://www.cnblogs.com/rocky-AGE-24/p/5041346.html