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。

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值