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

公司网站建设费用预算聊城城乡建设局网站

公司网站建设费用预算,聊城城乡建设局网站,网站建设办什么手续,怎么建设自己导购网站文章目录 了解请求重复提交解决思路具体实现 了解请求重复提交 请求重复提交是指用户在一次请求还未处理完成时#xff0c;重复提交了相同的请求。这种情况通常发生在网络延迟、用户误操作或系统性能不佳等情况下。 请求重复提交可能会导致以下问题和影响#xff1a; 数据不… 文章目录 了解请求重复提交解决思路具体实现 了解请求重复提交 请求重复提交是指用户在一次请求还未处理完成时重复提交了相同的请求。这种情况通常发生在网络延迟、用户误操作或系统性能不佳等情况下。 请求重复提交可能会导致以下问题和影响 数据不一致如果重复提交的请求包含了对数据的修改操作那么可能会导致数据不一致的问题例如重复购买商品、重复支付订单等。 系统资源浪费重复提交的请求会占用系统资源导致服务器负载过高、响应时间变慢等问题影响系统性能和用户体验。 安全问题某些敏感操作如支付、修改密码等如果被重复提交可能会导致安全问题例如重复支付导致资金损失、重复修改密码导致账号被盗等。 因此防止请求重复提交是保证系统数据一致性、提高系统性能和保障系统安全的重要措施。 解决思路 在 Spring Boot 中有效地防止用户在短时间内重复提交表单或请求我们可以结合 Redis 来实现这个功能我们可以将用户的请求信息存储在缓存中这样我们就可以实时跟踪用户请求的状态同时也可以提高系统的性能。为了限制用户在短时间内重复提交相同的请求我们可以设置一个时间间隔来限制重复提交。用户在指定时间间隔内提交相同的请求时将返回一个错误信息否则请求将被正常处理。因此通过这个方法我们可以有效地防止用户在短时间内提交重复的请求避免系统资源的浪费。通常情况下我们可以使用注解拦截器的方式来实现这个功能。 注解是一种在代码中添加元数据的方式它可以为方法、类、字段等添加额外的信息。在请求重复提交的场景中我们可以通过在方法或接口上添加自定义注解在运行时通过反射机制来获取并解析注解信息从而执行相应的逻辑。 而拦截器则是一种在请求到达控制器之前对请求进行处理的组件。它可以拦截请求并在请求到达目标处理程序之前或之后执行一些预处理或后处理操作。 具体工作流程图如下 具体实现 首先我们需要创建一个自定义注解用于标记需要进行重复请求拦截的方法。例如我们在项目中创建一个名为RepeatSubmit的注解 Inherited Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) Documented public interface RepeatSubmit {/*** 间隔时间(ms)小于此时间视为重复提交*/public int interval() default 60000;/*** 提示消息*/public String message() default 不允许重复提交请稍候再试;}创建一个拦截器类用于拦截带有RepeatSubmit注解的请求。在拦截器中可以通过保存请求的唯一标识如token来判断请求是否已经被处理过。 Component public class RepeatSubmitInterceptor implements HandlerInterceptor {Autowiredprivate RedisCache redisCache;Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 判断处理器对象是否为HandlerMethod类型if (handler instanceof HandlerMethod) {HandlerMethod handlerMethod (HandlerMethod) handler;Method method handlerMethod.getMethod();// 获取方法上的RepeatSubmit注解RepeatSubmit annotation method.getAnnotation(RepeatSubmit.class);if (annotation ! null) {// 获取请求的IP地址、URI、请求方法、请求参数和请求体String ipAddr IpUtils.getIpAddr(request);String requestURI request.getRequestURI();String requestMethod request.getMethod();MapString, String requestParams ServletUtils.getRequestParams(request);MapString, String requestBody ServletUtils.getRequestBody(request);// 创建缓存数据对象并将请求信息存入其中MapString,Object cacheData new HashMap();cacheData.put(ip,ipAddr);cacheData.put(uri,requestURI);cacheData.put(method,requestMethod);cacheData.put(params,requestParams);cacheData.put(body,requestBody);// 将缓存数据进行MD5加密String md5V MD5Utils.encrypt(cacheData);// 在Redis缓存中设置缓存对象如果已存在则返回falseBoolean b redisCache.setCacheObjectIfAbsent(repeat_submit:ipAddr:md5V, cacheData, annotation.interval(), TimeUnit.MILLISECONDS);if(b){// 如果缓存设置成功则放行请求return true;}else {// 如果缓存已存在则返回重复提交错误信息AjaxResult ajaxResult AjaxResult.error(annotation.message());ServletUtils.renderString(response, JSON.toJSONString(ajaxResult));return false;}}// 如果方法没有RepeatSubmit注解则放行请求return true;}else {// 如果处理器对象不是HandlerMethod类型则放行请求return true;}}}在Spring Boot的配置类中注册拦截器 Configuration public class WebMvcConfig implements WebMvcConfigurer {Autowiredprivate RepeatSubmitInterceptor repeatSubmitInterceptor;Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(repeatSubmitInterceptor).addPathPatterns(/**);}}在需要进行重复请求拦截的方法上添加DuplicateSubmitToken注解 Controller public class MyController {RequestMapping(/submit)RepeatSubmitpublic String submit() {// 处理请求逻辑return success;} }启动项目使用 ApiFox 发起请求访问/submit接口发送成功 请求发送成功后查看Redis中的缓存数据包含我们请求时接口数据 再次发起同样的请求直接返回提示信息“不允许重复提交请稍候再试”
http://www.yingshimen.cn/news/76209/

相关文章:

  • 专门做汽车gps贷款网站ps自学网官方网站
  • 苏州营销网站建设公司排名wordpress单页插件
  • 淘客网站如果做优化代理网站备案表
  • 企业网站开发流程简述中国搜索网站排名
  • 网站建设工作分解结构词典中国建设银官方网站
  • 比较有特色的网站网站恶意注册
  • 优秀网站特点wordpress 后台 获取分类id
  • 网站建设 武讯科技自家房子做民宿的网站
  • 旅游网站建设的参考文献如何自建网站接广告
  • 西安东郊网站建设公司东莞最近三天的新闻大事
  • 食品网站制作html网站怎么做视频教程
  • 个人做网站备案多少钱开发企业网站费用
  • dede我的网站网站建设合同的性质
  • 济南网站制作厂家网页设计实训报告总结3000字
  • 甘肃城乡建设厅网站首页网站建设基本流程 dns
  • 找个人合伙做网站wordpress后台密码忘记怎么办
  • 网站怎么做防御中山做网站哪家便宜
  • 手机站建设怎么自己做影视网站
  • 如何建设网站?济南网络营销外包
  • 博客网站开发背景移动端低代码开发平台
  • 个人网站做团购商业空间设计图片
  • 辽宁网站建设平台北京网站建设大概需要多少钱
  • 网站域名在哪里买做网站怎样让内容在小窗口打开
  • 网站建设需求怎么写做公司的后台网站用什么软件好
  • 制作网站需要钱吗网站建设论文二稿
  • 网上做平面设计兼职不错的网站试玩平台网站怎么做
  • 创立制作网站公司wordpress 管理中心
  • 商城属于电商网站吗游戏推广app平台
  • wordpress 回收站在哪广州定制网站建设方案书
  • 企业网站货物查询怎么做网页版视频怎么下载