防止数据重复,通过session保存url和请求参数来校验

  1. package com.thinkgem.jeesite.common.repeat_form_validator;  
  2.   
  3. import java.lang.reflect.Method;  
  4. import java.util.HashMap;  
  5. import java.util.Map;  
  6.   
  7. import javax.servlet.http.HttpServletRequest;  
  8. import javax.servlet.http.HttpServletResponse;  
  9.   
  10. import org.springframework.web.method.HandlerMethod;  
  11. import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;  
  12.   
  13. import com.thinkgem.jeesite.common.mapper.JsonMapper;  
  14.   
  15. /** 
  16.  * 一个用户 相同url 同时提交 相同数据 验证 
  17.  * 主要通过 session中保存到的url 和 请求参数。如果和上次相同,则是重复提交表单 
  18.  * @author Administrator 
  19.  * 
  20.  */  
  21. public class SameUrlDataInterceptor  extends HandlerInterceptorAdapter{  
  22.       
  23.       @Override  
  24.         public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {  
  25.            if(repeatDataValidator(request))//如果重复相同数据                
  26.         return false;      
  27.   else                        
  28. return true;
  29.   
  30.   }  
  31.     /** 
  32.      * 验证同一个url数据是否相同提交  ,相同返回true 
  33.      * @param httpServletRequest 
  34.      * @return 
  35.      */  
  36.     public boolean repeatDataValidator(HttpServletRequest httpServletRequest)  
  37.     {  
  38.         String params=JsonMapper.toJsonString(httpServletRequest.getParameterMap());  
  39.         String url=httpServletRequest.getRequestURI();    
  40.         Object preUrlParams=httpServletRequest.getSession().getAttribute(url); 
  41.  
  42.         if(preUrlParams==null)//如果上一个数据为null,表示还没有访问页面  
  43.         {  
  44.             httpServletRequest.getSession().setAttribute(url, params);  
  45.             return false;  
  46.         }  
  47.         else//否则,已经访问过页面  
  48.         {  
  49.             if(preUrlParams.toString().equals(params))//如果上次url+数据和本次url+数据相同,则表示重复添加数据  
  50.             {  
  51.                   
  52.                 return true;  
  53.             }  
  54.             else//如果上次 url+数据 和本次url加数据不同,则不是重复提交  
  55.             {  
  56.                 httpServletRequest.getSession().setAttribute(url, params);  
  57.                 return false;  
  58.             }  
  59.               
  60.         }  
  61.     }  
  62.   
  63. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值