本网站是威乐水泵中国售后配件供应站,我公司拥有是华中地区唯一拥有销售和售后授权的公司,本网站旨在传递水泵技术,传递威乐声音。
***,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作,在实际使用过程中需要考虑到诸多因素,那么过滤器和***哪个先执行?本期本发给我带来了过滤器和***的区别和使用场景!
一、过滤器和***哪个先执行
1、过滤器
依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤。
缺点是一个过滤器实例只能在容器初始化时调用一次,使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据。
比如:在过滤器中修改字符编码;在过滤器中修改HttpServletRequest的一些参数,包括:过滤低俗文字、危险字符等。
2、***
依赖于web框架,在SpringMVC中就是依赖于SpringMVC框架。在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用。
由于***是基于web框架的调用,因此可以使用Spring的依赖注入(DI)进行一些业务操作,同时一个***实例在一个controller生命周期之内可以多次调用。
缺点是只能对controller请求进行拦截,对其他的一些比如直接访问静态资源的请求则没办法进行拦截处理。
二、过滤器和***的区别和使用场景
1、***是基于java的反射机制的,而过滤器是基于函数回调。
2、***不依赖与servlet容器,过滤器依赖与servlet容器。
3、***只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
4、***可以访问action上下文、值栈里的对象,而过滤器不能访问。
5、在action的生命周期中,***可以多次被调用,而过滤器只能在容器初始化时被调用一次。
6、***可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在***里注入一个service,可以调用业务逻辑。