• 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

    上面是运行结果

  • 相关阅读:
    Argument 1 cannot be null
    灵性的笔尖勾勒幻想的国度,找寻梦想的脚步!用我的思想创建一个芬芳的世界!
    错误: Aggregate query has too many rows > 不需要用子查询
    之前玩GAE收藏夹里的链接
    ExtJs收缩按钮相应事件如何被捕捉?
    winxp注册表之开始菜单和任务栏
    C#代码规范 程序员必备的秘笈[转]
    c#中datagridview里checkbox的使用方法[转]
    Log4Net详细介绍[转]
    Ubuntu10.04窗口风格改为windows风格的方法
  • 原文地址:https://www.cnblogs.com/rocky-AGE-24/p/5041346.html
Copyright © 2020-2023  润新知