拦截器

拦截器的概念

java中的拦截器时动态的拦截Action调用的对象,它提供了一种机制,可以使开发者在一个Action执行的前后执行一段代码,也可以在Action执行前阻止其执行,同事也提供了一种可以提取Action中可重用部分代码的方式。在AOP中,拦截器用于在某个方法或者字段被访问之前,进行拦截,然后在之前之后进行拦截进行某种操作

拦截器

目前主要应用拦截器:Spring的拦截器,Struts2的拦截器(知道即可)

拦截器原理

  • 大部分时候拦截器方法都是通过代理的方式来调用的
  • Struts2的拦截器相当简单,当请求到达Struts2的ServletDispatcher时,Struts2会查找配置文件,并根据配置实例化拦截器对象,然后串成一个列表,最后一个个的调用列表中的拦截器
  • Struts2的拦截器是可插拔的,拦截器是AOP的一个实现,Struts2的拦截器栈就是将拦截器按一定的顺序连接成一个链,
  • 在访问被拦截的方法或者字段时,Struts2拦截器链中的拦截器按顺序执行。

如何实现拦截器

  • 自定义一个普通类,实现interceptor接口,或者继承抽象类AbstractInterceptor
  • 在配置文件中,注册定义得拦截器
  • 在需要Action得地方引用上述定义得拦截器,为了更方便得将拦截器定义为默认得拦截器,这样在不加特殊得情况下,所有得Action,都会被这个拦截器拦截

过滤器和拦截器的区别

过滤器可以简单的理解为“取你所取”,过滤器关注点在于web请求;拦截器可以理解为”拒你所拒“。拦截器关注的点在于方法的调用。
- 拦截器是基于java的反射机制来实现,而过滤器是基于函数回调实现的(也有人说拦截器是基于动态代理来实现的)
- 拦截器不依赖servlet容器,而过滤器依赖于servlet容器
- 拦截器只对Action起作用,而过滤器可以对所有的请求起作用
- 拦截器可以访问Action上下文和值栈的对象,而过滤器不能
- 在Action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化的时候调用一次

Spring的拦截器

抽象类HandlerInterceptorAdaptor

- 在Spring的项目中可以直接继承上面的抽象类,来实现拦截器

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值