【发布时间】:2015-01-10 14:24:09
【问题描述】:
我正在开发一个 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)中定义的,所以过滤器在DispatcherServlet之前执行?
【问题讨论】:
-
好像是
DispatcherServlet之后第一个被执行的东西。这是不正确的。见servlets - Relationship between Spring DispatcherServlet and Filters - Stack Overflow。
标签: java spring spring-mvc servlets