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);
    }

    }


  • 相关阅读:
    Windows7下安装与破解IntelliJ IDEA2017
    Maven的目录结构和常用命令
    Maven三种仓库的配置
    Maven的安装
    Maven是什么
    SQL执行计划分析2
    SQL执行计划分析
    PHP 单点登录实现方案
    PHP消息队列实现及应用
    fastAdmin根据状态显示是否显示操作按钮
  • 原文地址:https://www.cnblogs.com/shininguang/p/4922870.html
Copyright © 2011-2022 走看看