资讯专栏INFORMATION COLUMN

Spring中Filter和Interceptor的区别

fancyLuo / 2658人阅读

摘要:有如下几个种类用户授权检查用户请求,根据请求过滤用户非法请求日志记录某些特殊的用户请求解码对非标准编码的请求解码。和的区别是基于函数回调方法的,而则是基于反射的思想。依赖于容器,而不依赖于容器。对几乎所有的请求起作用,而只能对请求起作用。

Interceptor

主要作用:拦截用户请求,进行处理,比如判断用户登录情况、权限验证,只要针对Controller请求进行处理,是通过HandlerInterceptor

Interceptor分两种情况,一种是对会话的拦截,实现spring的HandlerInterceptor接口并注册到mvc的拦截队列中,其中preHandle()方法在调用Handler之前进行拦截(上图步骤3),postHandle()方法在视图渲染之前调用(上图步骤5),afterCompletion()方法在返回相应之前执行;另一种是对方法的拦截,需要使用@Aspect注解,在每次调用指定方法的前、后进行拦截。

Filter

主要作用:过滤字符编码、做一些业务逻辑判断,主要用于对用户请求进行预处理,同时也可进行逻辑判断。

Filter在请求进入servlet容器执行service()方法之前就会经过filter过滤(上图步骤1),不像Intreceptor一样依赖于springmvc框架,只需要依赖于servlet。Filter启动是随WEB应用的启动而启动,只需要初始化一次,以后都可以进行拦截。

Filter有如下几个种类:

用户授权Filter:检查用户请求,根据请求过滤用户非法请求;

日志Filter:记录某些特殊的用户请求;

解码Filter:对非标准编码的请求解码。

Filter和Interceptor的区别

Filter是基于函数回调(doFilter()方法)的,而Interceptor则是基于Java反射的(AOP思想)。

Filter依赖于Servlet容器,而Interceptor不依赖于Servlet容器。

Filter对几乎所有的请求起作用,而Interceptor只能对action请求起作用。

Interceptor可以访问Action的上下文,值栈里的对象,而Filter不能。

在action的生命周期里,Interceptor可以被多次调用,而Filter只能在容器初始化时调用一次。

Filter在过滤是只能对request和response进行操作,而interceptor可以对request、response、handler、modelAndView、exception进行操作。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74048.html

相关文章

  • 面试题:SpringMVCStruts2区别

    摘要:的入口是,而是这里要指出,和是不同的。以前认为是的一种特殊,这就导致了二者的机制不同,这里就牵涉到和的区别了。开发效率和性能高于。的实现机制有以自己的机制,用的是独立的方式。 1、Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上SpringMVC...

    isaced 评论0 收藏0
  • spring过滤器与拦截器区别

    摘要:拦截器原理拦截器是基于反射机制动态代理实现使用实现接口返回值表示是否需要将当前的请求拦截下来。 拦截器 原理:拦截器是基于java反射机制(动态代理)实现 使用: 实现HandlerInterceptor接口 - preHandle:返回值:boolean表示是否需要将当前的请求拦截下来。方法中Object对象标识的是被拦截的请求的目标对象 - postHandle:在Disp...

    gotham 评论0 收藏0
  • 分享笔记:SpringBoot三种拦截服务【FilterInterceptor,Aspect】

    摘要:拦截服务一使用第三方过滤器直接加入项目拦截服务二使用自定义拦截器拦截服务三使用切片完结 Spring拦截服务【一】(SpringBoot使用第三方过滤器Filter直接加入项目) Spring拦截服务【二】(SpringBoot使用自定义拦截器Interceptor) Spring拦截服务【三】(SpringBoot使用切片Aspect)【完结】

    qujian 评论0 收藏0
  • springboot(五)——springboot拦截器过滤器小结

    摘要:而拦截器代理模式的实现基于反射,代理又分静态代理和动态代理,动态代理是拦截器的简单实现。如果是处理前后,既可以使用拦截器也可以使用过滤器,如果都使用了,注意前后顺序。 前言 关于过滤器Filter和拦截器Interceptor,大家都不会陌生,从一开始的servelet,到springmvc,再到现在的springboot,都有接触到,记得刚接触的时候,会容易弄混淆,想写这篇文章做个小...

    Magicer 评论0 收藏0
  • 【图片抓取】003-JAVA WEB(上)

    摘要:图片抓取上本项目主要讲述项目的搭建和启动过程,为以后继续图片抓取的业务展示做基础。用于处理请求和响应的拦截处理。这样相比容器直接发到处理,大大减少了代码重复工作而且方便统一管理。上下文关系从上图可以看出主要在和两部分做工作。 【图片抓取】003-JAVA WEB(上) 本项目主要讲述java web项目的搭建和启动过程,为以后继续图片抓取的业务展示做基础。项目中采用tomcat+spr...

    jiekechoo 评论0 收藏0

发表评论

0条评论

fancyLuo

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<