问题Filter和Interceptor是什么,有什么区别,他们的执行顺序是怎样的?

主要区别,Filter是J2EE javax.servlet提供,Interceptor是Spring提供,都可以对请求做拦截处理,可以理解为Filter在Interceptor的外围

Filter有如下几个用处。

  1. HttpServletRequest到达Servlet之前,拦截客户的HttpServletRequest。<br /> 根据需要检查HttpServletRequest,也可以修改HttpServletRequest头和数据。<br /> HttpServletResponse到达客户端之前,拦截HttpServletResponse。<br /> 根据需要检查HttpServletResponse,也可以修改HttpServletResponse头和数据。

interceptor 的执行顺序大致为:

  1. 请求到达 DispatcherServlet<br /> DispatcherServlet 发送至 Interceptor ,执行 preHandle<br /> 请求达到 Controller<br /> 请求结束后,postHandle 执行

执行顺序如下。
##############doFilter4 before##############
##############doFilter3 before##############
##############doFilter1 before##############
##############doFilter2 before##############
##############TestInterceptor1 preHandle##############
##############TestInterceptor2 preHandle##############
Index Controller
##############TestInterceptor2 postHandle##############
##############TestInterceptor1 postHandle##############
##############TestInterceptor2 afterCompletion##############
##############TestInterceptor1 afterCompletion##############
##############doFilter2 after##############
##############doFilter1 after##############
##############doFilter3 after##############