chenjiahe
2023-12-04 03f6d2d39edad74229d5daed9cbc150ecb4691b0
提交 | 用户 | age
03f6d2 1 package com.hx.repeat.check;
C 2
3 import com.hx.exception.TipsException;
4 import com.hx.redis.RedisUtil;
5 import com.hx.util.DateUtil;
6 import com.hx.util.IPUtils;
7
8 import javax.servlet.http.HttpServletRequest;
9 import java.util.Date;
10 import java.util.concurrent.TimeUnit;
11
12 /**
13  * URL防重复提交
14  * @author CJH
15  */
16 public class RequestRepeat {
17
18     /**请求重复校验
19      * @param request HttpServletRequest
20      * @param redisUtil redis
21      * @param millisecond 间隔时间,毫秒(默认500毫秒)
22      */
23     public static void checkRequest(HttpServletRequest request,RedisUtil redisUtil,Long millisecond){
24         //没有设置,默认0.5秒
25         if(millisecond == null){
26             millisecond = 500L;
27         }
28         //获取请求的IP地址
29         String ip = IPUtils.getIpAddr(request);
30         //获取URL
31         String method = request.getServletPath();
32         if(!redisUtil.setIfAbsent(ip+"-"+method, DateUtil.formatDate(new Date(),"yyyy-MM-dd HH:mm:ss"),millisecond, TimeUnit.MILLISECONDS)){
33             throw new TipsException("请勿频繁操作!");
34         }
35     }
36
37 }