各位高手,请指教: 
    我现在项目用到spring mvc 
    controller是用注解方式实现的 
    对表单验证也是用注解方式 
    如何验证失败需要表单回写的 
    
    以上功能都没什么问题,现在问题是如何防止表单重复提交?     controller demo: 
    @RequestMapping("/adAddsubmit.html") 
    public ModelAndView addsubmit(HttpServletRequest request, 
  @ModelAttribute("adInfoForm") @Valid final AdInfoForm adInfoForm, 
          final BindingResult result){     请指教,谢谢! 

解决方案 »

  1.   

    可以写一个令牌
         放到session 里面
    在服务器处理请求的时候会话中包含的令牌值与保存在当前用户会话中的令牌值进行比较,看是否匹配。在处理完该请求后,且在答复发送给客户端之前,将会产生一个新的令牌,该令牌除传给客户端以外,也会将用户会话中保存的旧的令牌进行替换。这样如果用户回退到刚才的提交页面并再次提交的话,客户端传过来的令牌就和服务器端的令牌不一致,从而有效地防止了重复提交的发生。
      

  2.   

    如果web项目分布式发布在多个tomcat中,用session来存储令牌,会不会有不能命中的情况??
    如果web项目只布署在一个tomcat中,当然不会有这个问题
      

  3.   


    那你用uuid 编码吧  这样就绝对不会 有重复的令牌了