chenjiahe
2023-12-04 03f6d2d39edad74229d5daed9cbc150ecb4691b0
防重复提交工具
1个文件已添加
37 ■■■■■ 已修改文件
src/main/java/com/hx/repeat/check/RequestRepeat.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/hx/repeat/check/RequestRepeat.java
New file
@@ -0,0 +1,37 @@
package com.hx.repeat.check;
import com.hx.exception.TipsException;
import com.hx.redis.RedisUtil;
import com.hx.util.DateUtil;
import com.hx.util.IPUtils;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.concurrent.TimeUnit;
/**
 * URL防重复提交
 * @author CJH
 */
public class RequestRepeat {
    /**请求重复校验
     * @param request HttpServletRequest
     * @param redisUtil redis
     * @param millisecond 间隔时间,毫秒(默认500毫秒)
     */
    public static void checkRequest(HttpServletRequest request,RedisUtil redisUtil,Long millisecond){
        //没有设置,默认0.5秒
        if(millisecond == null){
            millisecond = 500L;
        }
        //获取请求的IP地址
        String ip = IPUtils.getIpAddr(request);
        //获取URL
        String method = request.getServletPath();
        if(!redisUtil.setIfAbsent(ip+"-"+method, DateUtil.formatDate(new Date(),"yyyy-MM-dd HH:mm:ss"),millisecond, TimeUnit.MILLISECONDS)){
            throw new TipsException("请勿频繁操作!");
        }
    }
}