zoukankan      html  css  js  c++  java
  • 防止表单重复提交

    防止表单重复提交最好的方式就是使用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);
    }

    }


  • 相关阅读:
    《转》2013年那些深入人心的小故事
    sklearn学习2-----LogisticsRegression
    sklearn学习汇总
    sklearn学习1----sklearn.SVM.SVC
    树(5)-----判断两颗树一样或者一棵树是否是另外一颗的子树
    树(4)-----树的高度
    面试题1-----SVM和LR的异同
    算法19-----(位运算)找出数组中出现只出现一次的数
    树(3)-----栈(迭代)
    python中的全局变量、局部变量、实例变量
  • 原文地址:https://www.cnblogs.com/shininguang/p/4922870.html
Copyright © 2011-2022 走看看