首页 > 技术文章 > 过滤器、拦截器应用场景、区别和使用

jklixin 2020-10-05 14:37 原文

应用场景

过滤器的应用:字符编码转换,敏感词过滤、登陆权限验证、资源访问权限等
拦截器的应用:AOP、需要有一些业务逻辑(需要注入Bean等)

区别

  1. 过滤器配置再web.xml中、拦截器配置springmvc的配置文件中(即在DispatcherServlet的contextConfigLocation属性指定文件所在位置,默认加载的是:/WEB-INF/servlet名称-servlet.xml(springmvc-servlet.xml))
  2. 过滤器基于函数回调、拦截器基于反射
  3. 过滤器几乎对所有请求起作用,拦截器只对目标执行方法(action方法)起作用
  4. 过滤器:对请求进行预处理、再交给Servlet处理并且生成响应,最后Filter再对服务器响应进行后处理
    拦截器:可以再方法执行前调用(preHandle)、方法执行后(postHandle)、视图页面渲染后(afterCompletion)

执行流程

过滤器初始化-》(客户端请求过来)dofilter处理请求-》到达dispatchServlet,在目标方法执行前preHandle-》(放行,返回true)执行目标方法-》(正常返回,异常则不执行)postHandle-》(无论目标方法是否执行或者执行是否出现异常,都会执行)afterCompletion-》dofilter处理响应-》客户端加载页面

推荐阅读