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