Spring AOP开发服务端防重复提交功能

我们在网页上点击按钮的时候由于网速等等的原因,可能会出现多次点击同一个按钮的情况,如果没有防重复提交功能就会导致数据库数据重复问题。客户端防重复提交经常使用一个变量判断数据提交过程,在提交过程中会让按钮不可点击来防重复提交。今天我就来介绍一下服务端是如何实现防重复提交功能的。

这里我的防重复提交功能需要使用到redis,所以你需要提前安装个redis软件。

我们只需要创建两个类,一个自定义注解(AvoidRepeatSubmit)和一个切面拦截实现类(AvoidRepeatSubmitAspect),如下

Spring AOP开发服务端防重复提交功能_第1张图片

自定义注解的实现:

Spring AOP开发服务端防重复提交功能_第2张图片

这里指定该注解的使用范围只有方法(@Target),运行周期为程序运行中(@Retention).

AvoidRepeatSubmitAspect类实现:

Spring AOP开发服务端防重复提交功能_第3张图片

我们要先声名该类是一个切面类@Aspect,然后指定切入点的注解。

然后在该注解被使用的时候调用防重复的验证方法,

我们使用请求的uri+sessionId拼接成key,并判断redis该key是否存在,如果不存在就将该key存入redis,设置过期时间为两秒。

如果该key存在就在response中写入重复提交的提示并返回。

使用防重复提交功能。

直接在接口方法中添加防重复提交的自定义注解就可以使用防重复提交功能了,如下图所示。

Spring AOP开发服务端防重复提交功能_第4张图片

你可能感兴趣的:(java,web)