拦截器、过滤器、@Aspect 区别

1、需求场景

 之前也有在文章写道 “拦截器\过滤器" 的区别,文章链接,在实际开发过程中,我们可能会遇到拦截请求参数的需求,在这我举个场景。

 

某一个接口的请求参数都是加密的,而请求参中还有一些跟业务无关的数据,需要剔除。

2、问题产生

 那么怎么能够实现只要和业务有关的数据呢?

 首先,我们想到的是通过拦截器,对加密的数据进行解密,然后把解密后的数据重新放到 request 中,request.setAttribute("数据名", 数据);

 其实呢,还可以通过 @Aspect 注解,在方法里通过 @before,@around 和 @after 注解的方式来拦截数据,配置起来比拦截器简单。

疑惑就在这产生了,通过  @Aspect  注解的方式写的跟拦截器有什么区别呢,他到底是不是拦截器呢?

3、问题总结

 3.1、三者不同

 @Aspect 注解形式是 AOP 的一种实现。AOP 使用的主要是动态代理 。

 过滤器使用的主要是反射 。

 拦截器使用的主要是回调 。

 3.2、示例分析

 前台一个请求过来 ,会先进行过滤器处理,看程序是否受理该请求 。 过滤器放过后 , 程序中的拦截器进行处理 ,处理完后进入 被 AOP 动态代理重新编译过的主要业务类进行处理 。

 通过示例去理解三者的不同 ,所以三者不存在所属关系。

 博客地址:https://www.cnblogs.com/niceyoo

原文地址:https://www.cnblogs.com/niceyoo/p/9527143.html

时间: 2024-10-07 11:23:01

拦截器、过滤器、@Aspect 区别的相关文章

SpringBoot 拦截器/过滤器/监听器

SpringBoot 拦截器 | 过滤器 | 监听器 1.拦截器:拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作.拦截是AOP的一种实现策略.一般用于拦截用户登录,用户验证等. 2.过滤器:它可以对客户的请求进行处理.处理完成后,它会交给下一个过滤器处理,这样,客户的请求在过滤链里逐个处理,直到请求发送到目标为止.一般用于对数据的处理. 3.监听器: 配置拦截器: 实现的 HandlerInterc

JavaWeb过滤器.监听器.拦截器-?原理&区别

1.拦截器是基于java的反射机制,过滤器是基于函数回调 2.拦截器不依赖与servlet容器,过滤器依赖与servlet容器3.拦截器只能对action请求起作用,过滤器则可以对几乎所有的请求起作用 4.拦截器可以访问action上下文.值栈里的对象,而过滤器不能 5.在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次 拦截器 :是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,

【springboot】过滤器、监听器、拦截器,Aspect切片

转自: https://blog.csdn.net/cp026la/article/details/86501019 简介: 本章介绍拦截器.过滤器.切片对请求拦截的使用与区别,以及监听器在 springboot1.5 中的简单使用 过滤器.拦截器.切片拦截请求的对比: 相同点: 都可以对请求进行拦截.不同点:1.过滤器对请求的拦截只能获取到原始的Request 和 Response 的信息.2.拦截器对请求的拦截可以获取原始的Request.Response和所有的controller及方法名

拦截器 过滤器 监听器 的区别

面试的时候突然被问了这么个问题 本来知道点啥的 脑子一热 啥也没说出来总结一下 以下内容均摘自网络 但是 读完之后 应该会对它们有更清晰的认识.1.1 什么是拦截器: 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作.拦截是AOP的一种实现策略. 在Webwork的中文文档的解释为--拦截器是动态拦截Action调用的对象.它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也

ava中拦截器 过滤器 监听器都有什么区别

过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts2的action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者struts2的action前统一设置字符集,或者去除掉一些非法字符 拦截器,是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现

过滤器(Filter)与拦截器(Interceptor )区别

目录 过滤器(Filter) 拦截器(Interceptor) 拦截器(Interceptor)和过滤器(Filter)的区别 拦截器(Interceptor)和过滤器(Filter)的执行顺序 拦截器(Interceptor)使用 过滤器(Filter)使用 拦截器(Interceptor)和过滤器(Filter)的一些用途 demo 总结 参考资料 正文 回到顶部 过滤器(Filter) Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,

过滤器(java.filter)和拦截器(springmvc.interceptor)区别

①拦截器是基于java的反射机制的,而过滤器是基于函数回调. ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器. ③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用. ④拦截器可以访问action上下文.值栈里的对象,而过滤器不能访问. ⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次 执行顺序:拦截器是被包裹在过滤器 假设doFilter中有代码:sout1;doFilter;sout2 执行顺序:sout1--

过滤器(Filter)与拦截器(Interceptor)的区别

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

拦截器和过滤器区别

比如动态代理就是拦截器的简单实现, public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object result = null; System.out.println("before invoke method :" + method.getName()); result = method.invoke(this.targetObj, args); System.out

拦截器 过滤器 监听器的使用简介

java 拦截器.过滤器.监听器 一.理解Struts2拦截器 1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现. 2. 拦截器栈(Interceptor Stack).Struts2拦截器栈就是将拦截器按一定的顺序联结成一条链.在访问被拦截的方法或字段时,Struts2拦截器链中    的拦截器就会按其之前定义的顺序被调用. 二.实现Struts2拦截器原理 Struts2拦截器的实