Java中的AOP、拦截器、过滤器

AOP(Aspect Oriented Programming)面向切面编程:

用我目前开发的项目说一下我对AOP的理解

项目的代码层次是:应用层(API)->业务逻辑层(BLL)->数据访问层(DAO)

应用层接受客户端的请求,业务逻辑层处理业务逻(主要是写根据业务写sql语句),数据访问层连接数据库执行sql语句。

一个简单的http请求达到服务器之后,正常走的流程如下图:

比如在API中的Controller是接收客户端的http请求的,但是我想在http到达Controller之前 验证一下 用户输入的信息有没有 敏感字符(比如:' , -- , javascript 这些有安全风险的字符),如果有的话,就不让这个请求继续走到Controller了,而是直接告诉客户端输入的信息不合法。

而拦截器、过滤器都是AOP思想的实现。

AOP的简单使用

实现aop需要依赖包spring-boot-starter-aop和spring-aop,还需要在启动文件上加上注解@EnableAspectJAutoProxy //启动AOP注解扫描

创建Aspect类

一定要加 @Aspect和 @Component注解

其中@Pointcut作为切入点,@Before在切入点之前执行,@After在切入点之后执行

"execution(* lyy.ApiDemo3.com.controllers..*(..))" 代表 执行lyy.ApiDemo3.com.controllers包下的所有方法

拦截器的简单使用

java中实现拦截器,需要两个类

1.实现HandlerInterceptor接口的类

2.继承WebMvcConfigurer,并重写addInterceptors方法的类(其实这个算是一个拦截器的配置类, 表明使用哪个拦截器,拦截哪些请求)

过滤器的简单使用

1.需要在启动类以下注解

@ServletComponentScan //扫描带@WebFilter、@WebServlet、@WebListener并将帮我们注入bean

2.创建Filter类,实现Filter

Filter类上需要加@WebFilter(urlPatterns="/Login/*")注解,这个表示过滤LoginController路径下的所有方法

如果项目中同时存在过滤器、拦截器、aop,则执行顺序是过滤器->拦截器->aop。

Spring拦截器过滤器AOP是Spring框架常用的三种技术,用于实现对请求的处理和控制。它们的作用和使用方式有一些不同,我会分别对它们进行简单解释。 1. 过滤器(Filter): 过滤器Java Servlet规范提供的一种技术,用于在请求到达Servlet之前或响应返回给客户端之前拦截和处理请求。过滤器可以在Web应用的整个生命周期起作用,对所有请求都生效。常见的应用场景包括:编码转换、身份认证、日志记录等。 2. 拦截器(Interceptor): 拦截器是Spring框架提供的一种技术,用于在请求到达Handler(Controller方法)之前或响应返回给客户端之前对请求进行拦截和处理。拦截器只在Spring MVC起作用,用于实现对请求的预处理和后处理。常见的应用场景包括:身份认证、权限控制、日志记录等。 3. AOP(面向切面编程): AOP是一种编程思想,也是Spring框架提供的一种技术。通过AOP,可以将与业务逻辑无关的横切关注点(如日志、事务管理等)从业务逻辑解耦出来,以模块化的方式进行管理。在SpringAOP通常通过动态代理实现,可以在方法执行前、后或抛出异常时进行一些额外的处理。AOP常用于事务管理、日志记录、性能监控等方面。 总结: - 过滤器主要用于在Servlet规范对请求进行拦截和处理。 - 拦截器主要用于在Spring MVC对请求进行拦截和处理。 - AOP主要用于将与业务逻辑无关的横切关注点进行解耦和管理。 希望以上解释能对你有所帮助!如果有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值