在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) %>
就可以实现了,效果如图