春季MVC执行顺序:滤波器和拦截器

2022-09-03 02:00:51

我正在开发一个弹簧MVC应用程序,它使用实现javax.servlet.Filter的过滤器和一个扩展or org.springframework.web.servlet.handler.HandlerInterceptorAdapter

据我所知,Spring MVC的控制流程是这样的:

  1. 请求到达 。DispatcherServlet
  2. DispatcherServlet将其发送到 并执行重写的方法。InterceptorpreHandle
  3. 请求到达匹配的控制器。
  4. 在处理完请求后,如果拦截器的方法也被覆盖,Spring将执行其代码。postHandle
  5. DispatcherServlet使用视图解析程序并将模型发送到视图,并对其进行呈现。

做一些测试,我可以看到我的过滤器总是在方法之前执行。这似乎是之后第一个执行的事情。没关系,但我没有找到这种行为的原因。有人有很好的解释吗?preHandleDispatcherServlet

谢谢!

更新:可能性:这是因为过滤器是在(如)中定义的,所以过滤器是在?web.xmlDispatcherServletDispatcherServlet


答案 1

它完全没问题,就像Servlet规范的一部分一样。Filter's

Filters由您的 .而拦截器由 调用。Server(tomcat)Spring


答案 2

推荐