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

芜湖营销型网站建设网站添加在线支付功能

芜湖营销型网站建设,网站添加在线支付功能,网站需要优化的小型公司,网站做推广团队说明#xff1a; 一些版本比较老的spring框架的#xff0c;是通过继承HandlerInterceptorAdapter并重写preHandle()方法#xff0c;和继承WebMvcConfigurerAdapter并重写 addInterceptors()方法来实现拦截器的#xff0c;但是这两个类很久前就已经过时了#xff0c;不推荐…说明 一些版本比较老的spring框架的是通过继承HandlerInterceptorAdapter并重写preHandle()方法和继承WebMvcConfigurerAdapter并重写 addInterceptors()方法来实现拦截器的但是这两个类很久前就已经过时了不推荐使用推荐使用下面两个接口。 以接口接口限流进行具体的操作自定义拦截器主要步骤就是两个 1、实现HandlerInterceptor并实现rpreHandle前置处理方法 2、实现WebMvcConfigurer并实现addInterceptors增加拦截器方法把自定义的拦截器增加到spring容器中 HandlerInterceptor拦截器处理器接口有三个接口 ● preHandle在业务处理器处理请求之前被调用。预处理可以进行编码、安全控制、权限校验等处理 ● postHandle在业务处理器处理请求执行完成后生成视图之前执行。后处理调用了Service并返回ModelAndView但未进行页面渲染有机会修改ModelAndView ● afterCompletion在DispatcherServlet完全处理完请求后被调用可用于清理资源等。返回处理已经渲染了页面 实操 1、引入依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactId /dependency !--Redis依赖-- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId /dependency2、自定义接口访问注解 /** * 接口访问限制枚举 * author ppp * date 2023/2/14 */ Target({ElementType.METHOD}) Retention(RetentionPolicy.RUNTIME) public interface AccessLimit {/*** return 访问最大次数*/int accessMaxTimes() default 60;/*** return 时间*/long timeOut() default 1;/*** return 时间单位*/TimeUnit timeUnit() default TimeUnit.MINUTES; }3、自定义拦截器配置 同时实现HandlerInterceptorWebMvcConfigurer实现preHandle和addInterceptors方法 /** * 接口访问限制拦截器配置 * author ppp * date 2023/2/14 */ Component public class AccessLimitInterceptorConfig implements HandlerInterceptor, WebMvcConfigurer {private final static String KEY Redis_accessLimit_key;AutowiredRedisTemplate redisTemplate;AutowiredAccessLimitInterceptorConfig accessLimitInterceptorConfig;Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//判断请求是否属于方法的请求if(handler instanceof HandlerMethod){HandlerMethod hm (HandlerMethod) handler;//获取方法中的注解,看是否有该注解AccessLimit accessLimit hm.getMethodAnnotation(AccessLimit.class);if(accessLimit null){return true;}int accessMaxTimes accessLimit.accessMaxTimes();long timeOut accessLimit.timeOut();TimeUnit timeUnit accessLimit.timeUnit();// 如果redis不存在或已经过期Long expire redisTemplate.opsForValue().getOperations().getExpire(KEY);if (!redisTemplate.hasKey(KEY) || Objects.requireNonNull(expire).intValue() 0) {redisTemplate.opsForValue().set(KEY, 1, timeOut, timeUnit);} else {long increment redisTemplate.opsForValue().increment(KEY).intValue();if (increment accessMaxTimes) {throw new RuntimeException(访问已经超过最大值 accessMaxTimes);}}}return true;}Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(accessLimitInterceptorConfig);} }4、配置redis /*** Redis管理配置*/ Configuration public class RedisConfigurer {/*** 设置 redisTemplate 的序列化设置** param redisConnectionFactory* return*/Beanpublic RedisTemplateObject, Object redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplateObject, Object template new RedisTemplate();template.setConnectionFactory(redisConnectionFactory);GenericToStringSerializer genericToStringSerializer new GenericToStringSerializer(Object.class);template.setValueSerializer(genericToStringSerializer);template.setKeySerializer(new StringRedisSerializer());template.setHashKeySerializer(new StringRedisSerializer(Charset.forName(UTF-8)));template.setHashValueSerializer(new StringRedisSerializer(Charset.forName(UTF-8)));template.afterPropertiesSet();return template;}Beanpublic CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {return new RedisCacheManager(RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory),this.getRedisCacheConfigurationWithTtl(24 * 60 * 60), // 默认策略未配置的 key 会使用这个this.getRedisCacheConfigurationMap() // 指定 key 策略);}private MapString, RedisCacheConfiguration getRedisCacheConfigurationMap() {MapString, RedisCacheConfiguration redisCacheConfigurationMap new HashMap();return redisCacheConfigurationMap;}private RedisCacheConfiguration getRedisCacheConfigurationWithTtl(Integer seconds) {RedisCacheConfiguration redisCacheConfiguration RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(seconds));return redisCacheConfiguration;} }5、使用 /*** 一分钟内最多请求10次* param content*/ AccessLimit(accessMaxTimes 10, timeOut 1, timeUnit TimeUnit.MINUTES) GetMapping(/sendEvent) public void sendEvent(RequestParam String content) {testService.send(content); }
http://www.dnsts.com.cn/news/105812.html

相关文章:

  • 免费php网站网页设计个人网站作业
  • 惠州淘宝网站建设中国建设银行的网站色彩
  • 谷歌网站怎么设置才能打开网站兴宁区住房和城乡建设局网站
  • 兰州最好的网站开发公司学历提升机构的套路
  • 淄博百度网站做微信网站
  • 关于建设校园网站申请报告建造电商网站
  • 2023免费网站推广企业网站建设方案价位
  • 成熟的网站怎么做seo推广网站被k怎么办
  • 上杭县铁路建设办公室网站创意网站 案例 下载
  • 网站建设方案百度文库官方网站的域名
  • 百度验证网站类似站酷的网站建站
  • 推广型网站制作公司网站收录提交接口
  • 网站营销 海外图片网站 模板
  • 政务网站建设方案网架加工图
  • 网站开发好做还是平面好做aspcms网站地图模板
  • 如何手机网站建立网站建设的整体流程
  • 天津高端网站建设企业企腾做的网站怎么样
  • 网上商店网站设计帮人家做网站
  • 网站开发 需求说明书网页版qq怎么登录
  • 下载jsp网站开发用啥工具做网站一定需要主机吗
  • 免费网站建设seo酒店设计公司排名
  • 昆山网站建网站 企汇网
  • 厦门模板建站系统软件首页设计
  • 如何制作可以下单的网站辽阳专业建设网站公司电话号码
  • 遵义制作公司网站的公司惠州市seo上词
  • 呼伦贝尔北京网站建设高端设计图网站
  • 西安火车站建设吉林网站建设
  • 建设外贸购物网站安卓开发者平台
  • 白云手机网站建设江苏常州建设银行网站
  • 深圳网站设计公司排行wordpress 钩子列表