redisCache
Schlüssel: Wert; Die Informationen (Text und Zeit) der im Wert gespeicherten Anforderungsdaten werden verglichen, sofern vorhanden, der Anforderungsparameter und die Sendezeit. Wenn es nicht vorhanden ist, geben Sie die Anforderungsinformationen und die Sendezeit direkt in redisCache ein
private int intervalTime = 10 ;
public void setIntervalTime ( int intervalTime)
{
this . intervalTime = intervalTime;
}
public boolean isRepeatSubmit ( HttpServletRequest request)
{
RepeatedlyRequestWrapper repeatedlyRequest = ( RepeatedlyRequestWrapper) request;
String nowParams = HttpHelper. getBodyString ( repeatedlyRequest) ;
if ( StringUtils. isEmpty ( nowParams) )
{
nowParams = JSONObject. toJSONString ( request. getParameterMap ( ) ) ;
}
Map< String, Object> nowDataMap = new HashMap < String, Object> ( ) ;
nowDataMap. put ( REPEAT_PARAMS, nowParams) ;
nowDataMap. put ( REPEAT_TIME, System. currentTimeMillis ( ) ) ;
String url = request. getRequestURI ( ) ;
HttpSession session = request. getSession ( ) ;
Object sessionObj = redisCache. getCacheObject ( SESSION_REPEAT_KEY) ;
if ( sessionObj != null)
{
Map< String, Object> sessionMap = ( Map< String, Object> ) sessionObj;
if ( sessionMap. containsKey ( url) )
{
Map< String, Object> preDataMap = ( Map< String, Object> ) sessionMap. get ( url) ;
if ( compareParams ( nowDataMap, preDataMap) && compareTime ( nowDataMap, preDataMap) )
{
return true ;
}
}
}
Map< String, Object> cacheMap = new HashMap < String, Object> ( ) ;
cacheMap. put ( url, nowDataMap) ;
redisCache. setCacheObject ( SESSION_REPEAT_KEY, cacheMap, intervalTime, TimeUnit. SECONDS) ;
return false ;
}