美文网首页
web 防重复提交实现

web 防重复提交实现

作者: 良人与我 | 来源:发表于2019-05-27 13:53 被阅读0次

通过注解方式,在aop中判断是否重复提交。
整个流程如下。


image.png

注解

/**
 * @author river
 * @date 2019/5/27 11:38
 **/
@Retention(RUNTIME)
@Target(ElementType.METHOD)
public @interface NoRepeatSubmit {
}

AOP 内处理业务

/**
 * @author river
 * @date 2019/5/27 11:40
 **/
@Aspect
@Component
@Slf4j
public class NoRepeatSubmitAop {

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    public static final String NO_REPEAT_COMMIT = "NO_REPEAT_COMMIT:";

    @Around("@annotation(noRepeatSubmit)")
    public Object arround(ProceedingJoinPoint pjp, NoRepeatSubmit noRepeatSubmit) throws Throwable {
        ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue();
        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        String sessionId = RequestContextHolder.getRequestAttributes().getSessionId();
        HttpServletRequest request = attributes.getRequest();

        String key = NO_REPEAT_COMMIT + sessionId + "-" + request.getServletPath();
        // 如果缓存中有这个url视为重复提交
        if (opsForValue.get(key) == null) {
            Object o = pjp.proceed();
            opsForValue.set(key, "no repeat commit", 2, TimeUnit.SECONDS);
            return o;
        }

        log.debug("key = {} 重复提交", key);
       // 抛出异常 - 给前端
        throw new Exception("重复提交");
    }
}

这样如果是2秒内 同一个 url 的请求,就会被拦截(抛出异常)。

相关文章

  • web 防重复提交实现

    通过注解方式,在aop中判断是否重复提交。整个流程如下。 注解 AOP 内处理业务 这样如果是2秒内 同一个 ur...

  • 通过Redis 实现防重复提交

    简介 同一条数据被用户点击了多次,导致数据冗余,需要防止弱网络等环境下的重复点击,通过在指定的接口处添加注解,实现...

  • Spring MVC表单防重复提交

    ​ 利用Spring MVC的过滤器及token传递验证来实现表单防重复提交。 创建注解 @Target(Elem...

  • Spring MVC表单防重复提交

    利用Spring MVC的过滤器及token传递验证来实现表单防重复提交。 创建注解 @Target(Elemen...

  • SpringMVC后台token防重复提交解决方案

    SpringMVC后台token防重复提交解决方案 本文介绍如何使用token来防止前端重复提交的问题。 目录 1...

  • SpringBoot项目防重复提交

    前言 表单提交是web项目的基础功能,用户点击提交/保存按钮后,即会将提交的数据保存到服务端,使服务端对应的数据发...

  • 防重复提交设计方案

    场景描述 大型互联网项目中,由于业务特点(例如秒杀)同一时间很多的人在使用,用户连续快速点击,而且前端没有针对性处...

  • 防止表单重复提交(一)

    声明:此文章写于17年7月,并不够详细和完善,最新应用代码见文章 防表单重复提交(二) 一、表单重复提交的三种情形...

  • 手写代码

    节流: 重复操作被忽略,直到完成 防抖: 重复操作重置定时器 实现new 实现call和apply 实现 Prom...

  • 利用Session防止表单重复提交

    我们在进行web开发的时候,必不可少会遇见表单重复提交问题,那么,在什么情况下会产生表单重复提交的情况呢? 1、在...

网友评论

      本文标题:web 防重复提交实现

      本文链接:https://www.haomeiwen.com/subject/lwfhtctx.html