Java过滤器和拦截器

过滤器和拦截器

区别

  1. 规范不同:Filter过滤器是在Servlet规范定义的,是servlet容器支持的;而拦截器interceptor在spring容器内的,是spring框架支持的。
  2. 使用范围不同:Filter是servlet规范规定的,只能应用于web程序中;而拦截器interceptor既可以应用于web程序,也可以应用于application、swing程序中。
  3. 使用的资源不同:同其他代码块一样,拦截器interceptor也是一个spring组件,归spring管理,配置在spring文件中,因此能够使用spring里的任何资源、对象,例如service对象、数据源、事务管理等,通过IoC注入到拦截器即可;而Filter则不能。
  4. 深度不同:Filter拦截器只能在Servlet前后起作用。而拦截器interceptor能够深入到方法前后、异常抛出前后等,因此拦截器的使用具有更大的弹性。所以在spring架构中要优先使用拦截器。

触发时机

1、过滤器和拦截器的触发时机不同:

过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。

过滤器包裹住servlet,servlet包裹住拦截器。

Java过滤器和拦截器

 

2、过滤器的触发时机是容器后,servlet之前,所以过滤器的doFilter(ServletRequest request, ServletResponse response, FilterChain chain)的入参是ServletRequest ,而不是httpservletrequest。因为过滤器是在httpservlet之前就起作用了。

 Java过滤器和拦截器

 

上一篇:AJAX入门


下一篇:Java接口测试-get请求,使用httpClient获取cookies+携带获取的cookies访问get接口