• 防止表单重复提交


    防止表单重复提交最好的方式就是使用PRG模式
    用户已Post方式提交数据,Servlet以重定向的方式将用户重定向到另一个访问资源上,以Get的方式请求最终的资源。

    使用Token机制处理表单重复提交

    附Struts2的token介绍:http://www.cnblogs.com/shininguang/p/4922880.html

    1、接收客户GET请求,产生Token,并放在Session和request中各一份
    2、在表单中接收token
    3、用户提交表单
    4、处理表单请求前验证Token是否和Session中一直,如果不一致则视为重复提交,当成功提交后,将Session中的Token销毁。

    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    / 使用UUID作为token的值 /
    String token = UUID.randomUUID().toString();
    / 当发生请求的时候在请求的页面里传入一个token /
    request.setAttribute("token", token);

    / 将Session中的token也存一份*/
    HttpSession session = request.getSession();
    session.setAttribute("sessiontoken", token);

    / 当用户通过get方式访问token的时候,使用请求转发的方式重定向到token.jsp /
    request.getRequestDispatcher("/WEB-INF/views/token/token.jsp").forward(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    / 从请求的页面获得token /
    String token = (String) request.getParameter("token");
    / 获得金额 /
    String money = (String) request.getParameter("money");
    request.setAttribute("money", money);

    / 获得sessiontoken /
    HttpSession session = request.getSession();
    String sessiontoken = (String) session.getAttribute("sessiontoken");
    if(session != null && token.equals(sessiontoken)) {
    / 操作成功后将session中的token属性移除 /
    session.removeAttribute("sessiontoken");
    request.getRequestDispatcher("/WEB-INF/views/token/tokensuccess.jsp").forward(request, response);
    } else {
    / 重复提交跳转到repeat页面 /
    request.getRequestDispatcher("/WEB-INF/views/token/tokenrepeat.jsp").forward(request, response);
    }

    }


  • 相关阅读:
    透明度问题解决方案
    不得不去奋斗的原因
    未来的你肯定会感谢现在努力的你
    前端学习参考
    js仿京东轮播图效果
    hyper容器网络相关源码分析
    利用setns()将进程加入一个新的network namespace
    frakti && RunPodSandbox 源码分析
    Makefile 编写 tips
    《In Search of an Understandable Consensus Algorithm》翻译
  • 原文地址:https://www.cnblogs.com/shininguang/p/4922870.html
Copyright © 2020-2023  润新知