我正在开发一个Spring MVC应用程序,该应用程序使用实现javax.servlet.Filter
的过滤器和扩展javax.servlet.Filter
的拦截器。
据我所知,Spring MVC的控制流程是这样的:
DispatcherServlet
将其发送到DispatcherServlet
,并执行重写的Interceptor
方法。preHandle
方法也被覆盖,Spring将执行其代码。postHandle
使用视图解析器并将模型发送到视图,进行渲染。进行一些测试,我可以看到我的过滤器始终在DispatcherServlet
方法之前执行。它似乎是preHandle
之后的第一个执行的事物。可以,但是我找不到这种行为的原因。有人有很好的解释吗?
谢谢!
更新:可能性:这是因为在DispatcherServlet
中定义了过滤器(例如web.xml
,所以在DispatcherServlet
之前执行了过滤器?
完全可以DispatcherServlet
是Servlet规范的一部分。
Filter's
由您的Filters
调用。而拦截器由Server(tomcat)
调用。