一张图看懂执行顺序
Spring MVC 请求处理执行顺序
- HTTP Request
- → Filter1
- → Filter2
- → DispatcherServlet(Spring MVC 入口)
- → HandlerMapping(解析出 HandlerMethod)
- → HandlerInterceptor.preHandle()
- → Controller Method(实际业务逻辑)
- → HandlerInterceptor.postHandle()
- → Filter2(响应返回时再次经过)
- → Filter1
- HTTP Response
Filter vs. Interceptor 的适用场景
| 场景 | Filter | Interceptor |
|---|---|---|
| 处理静态资源 | ✅ | ❌ |
| 需要 Servlet API 操作 | ✅ | ❌ |
| 需要 Spring 上下文 | ❌ | ✅ |
| 需要 Controller 上下文 | ❌ | ✅ |