美文网首页
过滤器和拦截器

过滤器和拦截器

作者: Nzkalhbxx | 来源:发表于2022-12-21 23:49 被阅读0次

过滤器使用的是servlet的规范,依赖servlet应用容器。而拦截器是Spring的规范,内部是动态代理实现的,依赖spring mvc框架。

过滤器先于拦截器执行。请求从客户端发出后到达应用容器,然后首先执行过滤器链,过滤器链的执行顺序是web.xml中过滤器定义的顺序。所有过滤器都执行doFilter方法放行请求后,到达dispatcher servlet,然后获取handlerInterceptor 链和对应的handler。通过顺序执行拦截器interceptor的preHandler,如果每个preHandler都返回true,那么执行业务方法。然后在返回视图前执行postHandler,postHandler会接收modelandview,在postHandler中可以对modleAndView做处理。最后在返回视图后执行afterCompletion,业务方法执行异常时也会执行该方法。pre的顺序是正序,而post是倒序。

拦截器链中只要有一个拦截器的pre方法返回flase,则不会再执行后续的拦截器。业务方法/资源请求不会再执行。

过滤器中没有pre,post,afterCompletion等方法,只有一个dofilter方法,直接在dofilter方法中对请做处理或执行filterchain的doFilter方法放行请求。

过滤器是在web.xml中定义的,需要配置过滤器的实现类以及过滤的请求url。过滤的请求url可以是精确匹配,路径匹配,后缀匹配。优先级由高到低。最低的是/,匹配所有路径。/*是路径匹配的一种,所以优先级会比/更高,也是匹配所有的请求。

拦截器是spring mvc的规范,所以定义在spring的配置文件中,使用<mvc:>去配置相关的配置项。

过滤器中可以拿到request和response对象以及过滤器链对象

拦截器中pre方法中可以获取request,response自己对应handler对象(如handlermethod或者处理静资源的handler)

相关参考文章:

tomcat关于配置servlet的url-pattern的问题详解:
https://www.cnblogs.com/sogeisetsu/p/12950699.html

SpringMvc servlet 拦截器 过滤器关系和区别及执行顺序:
https://www.cnblogs.com/Jomini/p/13839743.html

HandlerInterceptor和MethodInterceptor :
https://blog.csdn.net/tjbsl/article/details/105256291

相关文章

  • 拦截器和过滤器

    拦截器和过滤器功能很相似 拦截器和过滤器的区别 过滤器 过滤器filter,自己都是实现filter接口,然后do...

  • SpringBoot添加过滤器Filter

    1. 拦截器和过滤器 先说一下,过滤器和拦截器的区别和联系。 1.1 相同点 首先过滤器和拦截器都能实现请求的筛选...

  • Springboot过滤器和拦截器详解及使用场景

    一、过滤器和拦截器的区别 1、过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前...

  • Springboot过滤器Filter和拦截器Intecepto

    一、过滤器和拦截器的区别 1、过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前...

  • java拦截器和过滤器的区别

    过滤器和拦截器的区别: ①拦截器是基于java的反射机制的,而过滤器是基于函数回调。②拦截器不依赖与servlet...

  • 拦截器和过滤器详解

    过滤器和拦截器的区别: 拦截器是基于java的反射机制的,而过滤器是基于函数回调。 拦截器不依赖与servlet容...

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

    过滤器和拦截器的区别: ①拦截器是基于java的反射机制的,而过滤器是基于函数回调。②拦截器不依赖与servlet...

  • Spring-Interceptor

    过滤器和拦截器的区别: ①拦截器是基于java的反射机制的,而过滤器是基于函数回调。 ②拦截器不依赖与servle...

  • Spring Boot 拦截器、过滤器、切片 执行顺序

    spring 过滤器 拦截器 切片的执行顺序? 步骤如下 1)过滤器启动2)拦截器启动(拦截器 preHandle...

  • 拦截器和过滤器

    拦截器和过滤器的区别: 1.拦截器是基于java反射机制的,过滤器是基于函数回调2.拦截器不依赖于servlet,...

网友评论

      本文标题:过滤器和拦截器

      本文链接:https://www.haomeiwen.com/subject/cmcvqdtx.html