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

多少钱可以立案起诉全面落实疫情防控优化措施

多少钱可以立案起诉,全面落实疫情防控优化措施,沈阳h5模板建站,app开发公司价格Springboot 拦截器 定义使用场景拦截器与过滤器的区别实现步骤全局拦截器的局限性全局拦截器VS局部拦截器局部拦截器自定义局部拦截器使用多个局部拦截器 定义 拦截器是Spring MVC框架中的一个重要组件,它是一种AOP(面向切面编程)的实现方式&…

Springboot 拦截器

  • 定义
  • 使用场景
  • 拦截器与过滤器的区别
  • 实现步骤
  • 全局拦截器的局限性
  • 全局拦截器VS局部拦截器
    • 局部拦截器
    • 自定义局部拦截器
    • 使用多个局部拦截器

定义

拦截器是Spring MVC框架中的一个重要组件,它是一种AOP(面向切面编程)的实现方式,专门拦截对控制层的请求。拦截器可以用于判断用户权限、拦截WebSocket请求等。

使用场景

Springboot拦截器具有多种作用,主要包括请求预处理、请求日志记录、鉴权和权限控制异常处理等。拦截器是一种特殊的组件,可以在请求处理的过程中对请求和响应进行拦截和处理。在不修改原有代码的情况下,实现对请求和响应的统一处理。

拦截器与过滤器的区别

  • 拦截器是基于java的反射机制的,而过滤器是基于函数的回调。
  • 拦截器不依赖于servlet容器,而过滤器依赖于servlet容器。
  • 拦截器只对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
  • 拦截器可以访问action上下文、值、栈里面的对象,而过滤器不可以。
  • 在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
  • 拦截器可以获取IOC容器中的各个bean,而过滤器不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。

实现步骤

  1. 实现HandlerInterceptor接口。
  2. 将拦截器加入WebMvcConfigrer
import org.springframework.web.servlet.HandlerInterceptor;  
import org.springframework.web.servlet.ModelAndView;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  public class MyInterceptor implements HandlerInterceptor {  @Override  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {  // 在请求处理之前进行拦截  System.out.println("Pre Handle method is Calling");  return true; // 返回true表示继续向下执行,返回false则中断执行。  }  @Override  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {  // 在请求处理之后,但在视图渲染之前进行拦截  System.out.println("Post Handle method is Calling");  }  @Override  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {  // 在整个请求结束之后进行拦截,即在DispatcherServlet渲染了对应的视图之后执行。  System.out.println("Request and Response is completed");  }  
}
@Configuration
public class MyConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {// 添加全局拦截registry.addInterceptor(new MyInterceptor());}@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {}
}

全局拦截器的局限性

每个请求方法都会执行拦截器处理,增加项目性能消耗

全局拦截器VS局部拦截器

局部拦截器

要求如下:

  • 执行特定方法才执行拦截器处理
  • 不同方法可执行不同拦截器处理
  • 单个方法可能要求多个业务类型拦截处理(比如同时需要执行耗时统计和记录日志)

那如何实现这样的局部拦截器呢,很简单,只要使用 Acri 框架处理即可,使用方式如下:

  1. 引入依赖
<dependency><groupId>cn.fntop</groupId><artifactId>acri-core</artifactId><version>1.0.0</version>
</dependency>
  1. 注册AcriIntercepter拦截器
@Configuration
public class AcriConfig implements WebMvcConfigurer, ApplicationContextAware {private ApplicationContext applicationContext;@Overridepublic void addInterceptors(InterceptorRegistry registry) {// 全局拦截registry.addInterceptor(new AcriIntercepter(applicationContext));}@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {}@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {this.applicationContext = applicationContext;}
}
  1. 使用 @Acri 注解
配置项默认值备注
valuenull具体拦截处理器,实现AcriProcessor并注入Spring容器
beforefalse是否处理请求前执行doBefore方法
duringfalse是否处理请求方法后执行doDuring方法
afterfalse是否在返回响应后执行doAfter方法
@Acri(value = AcriStopWatchProcessor.class, before = true, during = true, after = true)
@GetMapping("/login")
public String login() {log.info("登录中");return "登录成功";
}

AcriStopWatchProcessor是框架自带的耗时统计拦截
before = true //请求之前执行AcriStopWatchProcessor.doBefore()方法

自定义局部拦截器

  1. 实现implements AcriProcessor并注入Spring容器
@Slf4j
@Component
public class LogProcessor implements AcriProcessor {@Overridepublic void doBefore(HttpServletRequest request, HttpServletResponse response, Object handler) {log.info("doBefore");}@Overridepublic void doDuring(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {log.info("doDuring");}@Overridepublic void doAfter(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {log.info("doAfter");}
}
  1. 使用
//表示请求前执行LogProcessor.doBefore方法,请求后执行LogProcessor.doAfter()方法
//during=false表示不执行doDuring方法
@Acri(value = LogProcessor.class, before = true, during = false, after = true)
@GetMapping("/login")
public String login() {log.info("登录中");return "登录成功";
}
  1. 效果
    在这里插入图片描述

使用多个局部拦截器

@Acries(more = {@Acri(value = AcriStopWatchProcessor.class, before = true, after = true)
, @Acri(value = LogProcessor.class, before = true, after = true)})

详细文档参考:Acri

http://www.wangmingla.cn/news/46691.html

相关文章:

  • 网站重做 影响网络营销推广策划的步骤是什么
  • 企业网站制作哪些公司制作搜索引擎关键词seo优化公司
  • 营销型网站测评方法网站备案查询工信部官网
  • 做儿童业态招商要去哪些网站网站关键词优化排名
  • 网站建设成交话术职业技能培训有哪些
  • 国内app开发商seo网站推广优化
  • 山东济宁网站建设设计ttkefu在线客服系统官网
  • 公众号链接的手机网站怎么做百度推广培训
  • 做网站的字体大小单页网站seo如何优化
  • 国家住房和城乡建设局网站首页色盲测试图片60张
  • 做暧小视频免费视频在线观看网站百度网页版下载
  • 烟台企业网站建设公司seo网站推广的主要目的
  • 计算机网站建设维护的基本知识seo搜索推广
  • 摄影作品投稿网站怎么用手机制作网站
  • 动态网站开发基础体会网络营销的5种营销方式
  • 南阳哪里做网站比较好seo优化流程
  • seo网站优化外包seo工作内容有哪些
  • 在线小程序搜索引擎优化排名技巧
  • 怎么做企业网站二维码什么是seo优化?
  • 龙岩网站设计一般要多久搜索引擎优化关键词选择的方法有哪些
  • 大企业网站样式1元涨1000粉
  • 织梦网站采集如何做搜索引擎营销的主要方式有
  • wordpress缓存清除搜索引擎优化论文3000字
  • 没网站怎么做二维码扫描连接推广公司app主要做什么
  • 3g网站开发建立营销型网站
  • 石景山网站制作seo需要什么技术
  • 中企动力科技股份有限公司网站官网seo实战密码在线阅读
  • 中英版网站怎么做google网页版登录入口
  • 大兴网站开发网站建设报价大数据营销的概念
  • 阿里云1m服务器可以搭建网站友情链接网自动收录