当前位置: 首页 > news >正文

福州网站建设托管wordpress文章批量发布

福州网站建设托管,wordpress文章批量发布,购物商城网站制作,wordpress中能搜索到form中的文字吗基于SpringBoot框架来开发业务后台项目时,接口重复提交是一个常见的问题。为了避免这个问题,我们可以通过自定义拦截器实现一个后台拦截接口重复提交的功能,本文将介绍如何使用基于SpringBoot实现这个功能。 首先,我们需要引入一…

基于SpringBoot框架来开发业务后台项目时,接口重复提交是一个常见的问题。为了避免这个问题,我们可以通过自定义拦截器实现一个后台拦截接口重复提交的功能,本文将介绍如何使用基于SpringBoot实现这个功能。

  1. 首先,我们需要引入一个Aop依赖。在pom.xml文件中添加如下依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId>
</dependency>
  1. 创建一个自定义注解@NoRepeatSubmit,用于标记需要拦截的接口:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface NoRepeatSubmit {/*** 设置请求锁定时间,默认为5秒*/int lockTime() default 5;
}
  1. 创建一个拦截器类NoRepeatSubmitInterceptor,实现HandlerInterceptor接口,并在其中实现拦截逻辑:
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.UUID;
import java.util.concurrent.TimeUnit;@Aspect
@Component
public class NoRepeatSubmitInterceptor implements HandlerInterceptor {@Pointcut("@annotation(com.example.demo.annotation.NoRepeatSubmit)")public void noRepeatSubmitPointcut() {}@Around("noRepeatSubmitPointcut()")public Object around(ProceedingJoinPoint joinPoint) throws Throwable {// 获取请求参数中的token值HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();HttpSession session = request.getSession();String token = session.getAttribute("token").toString();// 判断是否已经提交过请求,如果已经提交过并且时间间隔小于锁时间,则直接返回成功结果,否则认为是重复提交,抛出异常并锁定sessionif (isSubmitted(token)) {String lockKey = UUID.randomUUID().toString();session.setAttribute(lockKey, System.currentTimeMillis());throw new RuntimeException("请勿重复提交");} else {session.setAttribute("token", token);return joinPoint.proceed();}}private boolean isSubmitted(String token) {HttpSession session = request.getSession();Object lockKey = session.getAttribute(token);if (lockKey == null) {return false;} else {long lockTime = (Long) session.getAttribute(token);if (lockTime > 0 && System.currentTimeMillis() - lockTime < TimeUnit.SECONDS.toMillis(5)) {return true;} else {session.removeAttribute(token);return false;}}}
}
  1. 注册拦截器

实现HandlerInterceptor接口的重写,重写preHandle、postHandle、afterCompletion方法。拦截器中的方法执行流程为 preHandle → controlle → postHandle → afterCompletion。然后需要将拦截器注册到容器中,可以通过实现WebMvcConfigurer的addInterceptors方法来实现。下面是一个简单的例子:

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new NoRepeatSubmitInterceptor()).addPathPatterns("/**").excludePathPatterns("/login", "/register");}
}
  1. 在需要进行拦截的接口上添加@NoRepeatSubmit注解,例如:
@RestController
public class UserController {@NoRepeatSubmit // 添加此注解表示该接口需要拦截重复提交请求@GetMapping("/submit")public String submit() {// 处理业务逻辑...return "success";}
}

通过以上步骤,我们实现了一个简单的后台拦截接口重复提交的功能。在实际项目中,还需要考虑更多的细节,例如如何保证锁的释放、如何处理并发请求等。但这个示例应该能帮助你入门SpringBoot拦截器的使用。

http://www.yayakq.cn/news/822665/

相关文章:

  • 微信 网站 收费标准深圳微商城网站设计电话
  • 下载类网站如何做网站运营核心
  • 做网站为什么赚钱免费拓客100个方法
  • 自己做游戏网站湖南seo推广服务
  • 泸州网站建设哪家好想学管理方面的培训班
  • 网站开发 哪家好网页设计综合实训论文
  • 织梦dede模板自带的网站地图优化指南网站建设装修
  • 网站首页设计方案网站推广排名哪家公司好
  • 毕业设计代做网站有哪些实体店怎么引流推广
  • 广州h5设计网站公司中国建设银银行招聘网站
  • 商城网站建设效果拉米拉云网站建设
  • 信息技术制作网站网红营销案例
  • 石家庄医疗网站建设做饲料机的川工网站
  • 做网站赚钱还是企业宣传片注册深圳公司恒诚信流程
  • 深圳南山 网站建设高唐企业建网站服务商
  • 上海微网站建设方案长春 网络公司
  • 用php写的网站网站注册理由
  • 查看网站dns服务器什么网站可以做模型挣钱
  • 织梦 友情链接 网站名 分隔符erp系统仓库管理系统
  • 用.net做的网站吗个人开发网站要多少钱
  • 如何做电影网站狼视听人才招聘网最新招聘信息
  • 产品外包装设计网站网站优化工作室
  • 唐山网站制作企业怎么促成客户做网站
  • 有哪些外国网站做精油的南京华夏商务网做网站怎么样
  • 公司网站修改怎么做学院网站建设流程图
  • 专门做视频的网站吗英语培训机构前十名
  • 网页游戏网站556pk游戏福利平台四川建设网入川备案网站
  • 网站做不做百度云加速改版一个网站多少钱
  • 湖南视频网站建设生鲜网站建设规划书
  • 河南省建设培训中心网站网站建站的标准