zoukankan      html  css  js  c++  java
  • 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

    上面是运行结果

  • 相关阅读:
    duilib设置背景颜色透明度
    Centos7 源码编译安装cmake 3.15
    SecureCRT修改背景主题和背景颜色
    fopen的最后一个参数说明
    SFTP从windows上传到linux服务器命令
    小白html 第一个网页
    linux上编译nginx 实现网页开发
    duilib list item互换
    libcurl 错误CURLE_COULDNT_CONNECT 解决办法
    使用mshta.exe绕过应用程序白名单
  • 原文地址:https://www.cnblogs.com/rocky-AGE-24/p/5041346.html
Copyright © 2011-2022 走看看