时间:2024-12-14 17:00:30
过滤器和拦截器哪个先执行
过滤器(Filter)先于拦截器(Interceptor)执行。
过滤器是被Server(如Tomcat)调用,主要针对URL地址进行编码、过滤掉没用的参数、安全校验等。它需要在web.xml中配置,依赖于Servlet。而拦截器是被Spring调用,可以使用Spring容器资源,如Service、数据源、事务管理等。它需要在SpringMVC中配置,依赖于框架。
拦截器的功能相对更强大,除了可以做过滤器的所有事情,还可以在请求前、请求后执行,比较灵活。例如,拦截器的postHandle方法在return ModelAndView之前进行,可以操控Controller的ModelAndView内容。而afterCompletion方法在拦截器返回给前端前一步执行。