代码拉取完成,页面将自动刷新
基于SpringBoot2+实现的一个防止重复提交组件,支持多策略模式:ALL、POST、GET、NONE及兼容注解指定接口拦截或者不拦截,防止用户提交时重复点击导致重复数据。
1.基于SpringBoot2.0+上的组件
2.基于拦截器Interceptor实现
3.支持多种策略运行模式:ALL、POST、GET、NONE以及@Annotation自定义方式
4.内置本地内存锁加锁,支持自定义其它锁实现,实现LockHandler接口并交给Spring管理即可,如:分布式锁
5.内置默认拦截返回信息,支持自定义返回handler
6.内置默认幂等标识(请求唯一标识): sessionId, 支持自定义,实现IdempotentUniquenessHandler接口交给Spring管理即可
<dependency>
<groupId>info.lyscms.assembly</groupId>
<artifactId>lyscms-prevent-duplicate-submit</artifactId>
<version>1.0.3</version>
</dependency>
策略模式说明:
a. ALL:所有类型的请求均会进行放重复拦截
b. POST:包括post、delete、put、patch
c. GET:包括get、head、options
d. NONE:不做任何放重复拦截
自定义幂等标识(请求id)、自定义锁实现、自定义拦截响应与下类似(默认如下)
@Configuration
public class PreventRepeatConfig {
@Bean
public IdempotentUniquenessHandler idempotentUniquenessHandler() {
return new IdempotentUniquenessHandler() {
/**
* 幂等唯一id
*
* @param request 请求对象
* @param method 方法
* @return 唯一标识
* @author sunkl
*/
@Override
public String idempotentId(HttpServletRequest request, HandlerMethod method) {
return request.getSession().getId() + "_" + request.getMethod() + "_" + request.getRequestURI();
}
};
}
}
注意项目中不要存在其它继承WebMvcConfigurationSupport的配置,若有请修改为实现WebMvcConfigurer即可,否则拦截器可能不会生效
指定接口拦截或者不拦截
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。