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

网站推广优化外链发布文章后马上更新网站主页

网站推广优化外链,发布文章后马上更新网站主页,wordpress 跳转小程序,企业网站建设的材料基于SpringBoot框架来开发业务后台项目时#xff0c;接口重复提交是一个常见的问题。为了避免这个问题#xff0c;我们可以通过自定义拦截器实现一个后台拦截接口重复提交的功能#xff0c;本文将介绍如何使用基于SpringBoot实现这个功能。 首先#xff0c;我们需要引入一…基于SpringBoot框架来开发业务后台项目时接口重复提交是一个常见的问题。为了避免这个问题我们可以通过自定义拦截器实现一个后台拦截接口重复提交的功能本文将介绍如何使用基于SpringBoot实现这个功能。 首先我们需要引入一个Aop依赖。在pom.xml文件中添加如下依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactId /dependency创建一个自定义注解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; }创建一个拦截器类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;}}} }注册拦截器 实现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);} }在需要进行拦截的接口上添加NoRepeatSubmit注解例如 RestController public class UserController {NoRepeatSubmit // 添加此注解表示该接口需要拦截重复提交请求GetMapping(/submit)public String submit() {// 处理业务逻辑...return success;} }通过以上步骤我们实现了一个简单的后台拦截接口重复提交的功能。在实际项目中还需要考虑更多的细节例如如何保证锁的释放、如何处理并发请求等。但这个示例应该能帮助你入门SpringBoot拦截器的使用。
http://www.zqtcl.cn/news/881972/

相关文章:

  • 上海网站开发caiyiduo微信建微网站
  • 做网站和做网店哪个好用cms做单页网站怎么做
  • 阿里云有主体新增网站可以免费制作网页的网站
  • 网站备案幕布拍照是什么莱芜网络推广公司服务
  • 招个网站建设维护国家高新技术企业官网
  • 建设医疗网站做企业官网哪家公司好
  • 网站建设常见问题及解决办法站长网站大全
  • 二手网站建设模块500做网站
  • 建设展示型网站公司哪家好广告制作费和广告服务费区别
  • 网站排版设计欣赏网站建设制作设计seo优化南宁
  • 长春网站建设公司十佳wordpress在哪注册
  • 手机号码定位网站开发世界知名外贸网站
  • 广西南宁网站建设排行榜建设一个视频网站己18
  • 以小说名字做网站的小说网最热门的网页游戏排行
  • 微网站菜单商品详情页面模板html
  • 免费word模板网站WordPress用户聊天功能
  • 网站显示图片标记wordpress文章分类div布局
  • 专业网站建设公司哪家专业阿里云二级域名建设网站
  • 返利网站怎么做手机网页前端开发
  • 做家教去什么网站人际网络网络营销是什么
  • 潮州外贸网站建设网站qq在线状态
  • 旅游网站开发背景及意义湖南城市建设网站
  • 西安网站开发托管代运营wordpress给外部链接加上跳转
  • 网站设计深圳企业为什么做网站素材
  • 网站顶部地图代码怎么做的家居装修
  • 网站后台不能修改网站哪家公司做的
  • 360网站建设官网致远oa办公系统官网
  • 南宁 做网站网站建立计划书
  • 兰亭集势网站模板宿迁房产
  • 网站建设开源苏州做网站优化哪家好