我正在开发一个使用过滤器实现的
spring-mvc应用程序:
javax.servlet.Filter
和拦截器扩展:
org.springframework.web.servlet.handler.HandlerInterceptorAdapter
据我所知,Spring MVC的控制流程是这样的:
>请求到达DispatcherServlet.
> DispatcherServlet将其发送到Interceptor,并执行覆盖的preHandle方法.
>请求到达匹配控制器.
>处理完请求后,如果拦截的postHandle方法也被覆盖,则Spring执行其代码.
> DispatcherServlet使用视图解析器并将模型发送到视图并进行渲染.
做一些测试我可以看到我的过滤器总是在preHandle拦截器方法之前执行.它似乎是DispatcherServlet之后的第一个执行的东西.没关系,但我找不到这种行为的原因.有人解释得好吗?
谢谢!
更新:可能性:这是因为过滤器是在web.xml中定义的(比如DispatcherServlet)所以Filter在DispatcherServlet之前执行?