在web中,防止刷新带来的数据插入

  • Post author:
  • Post category:其他


在web开发中,自己对表的增删查改是非常基本的操作,在编辑页面进行插入数据完成保存到数据库中时候,如果刷新页面将插入一条重复的数据。自己解决办法,用session request 令牌机制。

自己编写的一个工具列

package com.wei.ssi.utils;

/**

* 防止表单重复提交工具

* @author Sunny

*

*/

public class TokenUtils {

private static String cons = “@_____@token@________@”;

public static String setToken(javax.servlet.http.HttpServletRequest request) {


javax.servlet.http.HttpSession session = request.getSession();

String token = String.valueOf(java.util.UUID.randomUUID())

+ String.valueOf(System.currentTimeMillis());

session.setAttribute(“@_____@token@________@”, token);

String html = “<input type=\”hidden\” name=\”@_____@token@________@\” value='”

+ token + “‘/>”;

return html;

}

public static boolean isToken(javax.servlet.http.HttpServletRequest request) {


javax.servlet.http.HttpSession session = request.getSession();

String token = (String) session.getAttribute(cons);

if (token == null)

token = “”;

String tv = request.getParameter(cons);

session.removeAttribute(cons);

return token.equals(tv);

}

}

用的springmvc 框架在 save 方法里加上

@RequestMapping(“/save”)

public ModelAndView save(HttpServletRequest request,SmSysparameter bean){


//防止表单重复提交

if(!TokenUtils.isToken(request)){


log.error(“表单重复提交”);

return new ModelAndView(“duplicateSubmit”);

}

………………………………

}

在jsp 页面上加上

<%=com.wei.ssi.utils.TokenUtils.setToken(request) %>

就可以实现了,效果如图



版权声明:本文为xiaolongwu8666原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。