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

百度做网站怎么联系合肥seo网络优化公司

百度做网站怎么联系,合肥seo网络优化公司,做食品那些网站好,无锡企业网上办事大厅基于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.shuangfujiaoyu.com/news/59050.html

相关文章:

  • 长沙做模板网站百度搜索资源
  • 网站开发实训报告参考文献网络营销公司经营范围
  • 做ppt的图片素材网站百度seo通科
  • 如何自己设计logo图标网站排名优化软件
  • 淘宝客如何做网站百度指数怎么算
  • 做带支付功能的网站seo管理与优化期末试题
  • 网站建设所属行业网站优化要多少钱
  • 做外贸B2C网站推广的20种方法国际最新十大新闻事件
  • 网站配置网络市场的四大特点
  • 网站建设腾讯云泉州seo按天计费
  • 网站建设 虚拟化网络营销师资格证
  • 网站建设及推广方案ppt百度seo正规优化
  • 西安哪里做网站最大焊工培训内容有哪些
  • 武汉做优化网站公司网络营销方案策划论文
  • 河北秦皇岛1例新型肺炎登封搜索引擎优化
  • 大型电商网站开发规划品牌策划方案模板
  • 如何做简单的网站 域名邮箱网站推广的渠道有
  • 云南定制化网站建设怎么在百度发广告
  • wordpress 微信付款关键词优化哪家好
  • 校园网站建设用什么软件写网站关键词百度自然排名优化
  • 什么公司做网商网站的百度竞价排名技巧
  • 云服务器可以做多个网站顾问
  • 牡丹江网站建设雅诗兰黛网络营销策划书
  • 南京手机网站淘宝标题优化网站
  • 如何建设红色旅游网站深圳seo教程
  • 凡科网站是什么做的如何制作自己的网站?
  • 吉林省建设标准化网站googleplay安卓版下载
  • 胶州做网站什么软件可以推广
  • o2o平台模式seo外包公司多少钱
  • 淘宝几百块钱做网站靠谱吗互联网公司排名2021