龙空技术网

SpringBoot三大利器,过滤器、拦截器、切面

智慧的码农 1519

前言:

眼前看官们对“登录用过滤器还是拦截器好用”大体比较关切,你们都想要了解一些“登录用过滤器还是拦截器好用”的相关知识。那么小编在网上网罗了一些对于“登录用过滤器还是拦截器好用””的相关知识,希望朋友们能喜欢,同学们一起来了解一下吧!

今天智慧的码农给大家介绍下SprigBoot 三大利器,过滤器、拦截器、切面。各位Java后端小伙伴,想必在工作和面试中也经常用到和被问到这三大利器。今天就给大家做个简单的介绍。

如果大家喜欢的话,请点赞、转发和关注,您的支持是我文字分享的最大动力。

一、概念

过滤器(Filter)是Java Web的组件之一,其他组件还有Servlet和Listener等,基于回调机制,可以对请求进行预处理和请求后处理,既可以对请求进行拦截,也可以对响应进行处理。

拦截器(Interceptor)基于反射机制,可以在请求进到controller前进行拦截,只对controller有效。

切面(Aspect)是通知和切点的结合。通知和切点共同定义了切面的全部内容,可以在切点进行前置通知、后置通知、环绕处理、异常执行。

二、触发时机

通过图片可以看到Filter过滤器在容器和Servlet之间触发,Intecepter拦截器在Servlet和Controller之间触发,切面作用于方法,切面在方法执行前、后、环绕、异常执行。

三、作用范围

过滤器几乎对所有请求有效,包括css js等资源文件拦截器只对action(controller)有效切面对所有的方法起作用

四、执行和异常顺序

执行顺序:过滤器、拦截器、切面异常顺序:切面、拦截器、过滤器

五、实现方式

本篇文章只做简单的介绍,后续会有对应的具体文章。

过滤器,Filter接口拦截器,WebMvcConfigurerAdapter,HandlerInterceptor切面,@Pointcut,@Around,@Before,@After,@AfterReturning,@AfterThrowing

六、获取参数

过滤器和拦截器都可以读取HttpRequest的流,切面可通过切点直接获取。

过滤器(Filter) :可以拿到原始的http请求,但是拿不到你请求的控制器和请求控制器中的方法的信息。拦截器(Interceptor):可以拿到你请求的控制器和方法,却拿不到请求方法的参数。切面(Aspect): 可以拿到方法的参数,但是却拿不到http请求和响应的对象。

七、使用场景

1、过滤器

JavaDoc中的使用场景如下:

(1)用户访问权限过滤

(2) 日志过滤,可以记录特殊用户的特殊请求的记录等

(3) 图像转换

(4) 数据压缩

(5) 加密

(6) Token校验

(7) 媒体类型过滤

2、拦截器

(1)登录验证,判断用户是否登录。

(2)权限验证,判断用户是否有权限访问资源,如校验token

(3)日志记录,记录请求操作日志(用户ip,访问时间等),以便统计请求访问量。

(4)处理cookie、本地化、国际化、主题等。

(5)性能监控,监控请求处理时长等。

(6)通用行为:读取cookie得到用户信息并将用户对象放入请求,从而方便后续流程使用,还有如提取Locale、Theme信息等,只要是多个处理器都需要的即可使用拦截器实现)

3、切面

(1)日志打印

(2)性能监控

(3)针对某些方法实现定制业务

以上就是SprigBoot 三大利器,过滤器、拦截器、切面的简单介绍。欢迎大家一起学习和交流,并在评论区留言。关注智慧的码农,更多产品、技术、商业的文章分享给您!

标签: #登录用过滤器还是拦截器好用 #登录用过滤器还是拦截器好用一点