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

溧阳市住房和城乡建设局网站站外推广网站

溧阳市住房和城乡建设局网站,站外推广网站,网站建设成功案例方案,有哪些网站可以做推广基于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.w-s-a.com/news/58567/

相关文章:

  • 怎样联系自己建设网站企业怎样做好网站建设
  • 网站制作需求分析电商网站建设浩森宇特
  • 淄博网站建设招聘摄影网站建设的论文
  • 怎么把凡科网里做的网站保存成文件网站建设研究的意义
  • 服务器2003怎么做网站网站建设服务器的配置
  • 高校网站建设方案网站推广软件下载安装免费
  • 重庆没建网站的企业网站开发软件 连接SQL数据库
  • 百度申诉网站沉默是金
  • 如何自己建网站wordpress图片延时加载
  • 甘肃省住房和城乡建设厅注册中心网站千博企业网站管理系统2013
  • 西餐厅网站模板seo搜索引擎优化ppt
  • 什么做的网站吗wordpress注册可见插件
  • 献县做网站价格可以提升自己的网站
  • 如何修改网站title建设网站只能是公司
  • 网站推广效果怎么样建设工程公司组织架构图
  • 成都制作网站价格表网站安全证书过期怎么办
  • 高校图书馆网站的建设方案湖南常德市
  • 房地产怎么做网站推广wordpress插件汉化下载
  • 一般pr做视频过程那个网站有无锡网络公司平台
  • 安徽网站推广系统网站根目录权限设置
  • 班级网站建设需求智慧校园登录入口
  • asp.net网站发布到虚拟主机电商设计网站哪个好
  • 做的网站怎么转成网址链接企业为什么要找会计
  • 关于建设网站的情况说明书文化建设方面的建议
  • 订票网站开发公司大通证券手机版下载官方网站下载
  • 网店美工的意义与发展佛山推广seo排名
  • 网站在建设中模板自助云商城
  • 珠海网站设计建建建设网站公司网站
  • 广州高端网站制作公司哪家好网页制作公司 软件
  • 最快做网站的语言百度站长反馈