在 Java 里常说的“拦截器(Interceptor)”通常出现在 Web 开发(如 Spring、Spring MVC、Struts2) 中,但不同框架里“拦截器”的能力和范围是不一样的。下面以最常见的 Spring MVC 拦截器为主来说明,并补充其他场景。
Spring 的 HandlerInterceptor 主要拦截 Controller 层的请求,具体来说:
HTTP 请求进入 Controller 之前
Controller 执行之后、视图渲染之前
请求完成之后(视图渲染后)
Spring MVC 拦截器 不能拦截:
/css/、/js/,除非额外配置)请求 → Filter → DispatcherServlet → 拦截器.preHandle
→ Controller
→ 拦截器.postHandle
→ 视图渲染
→ 拦截器.afterCompletion
| 对比项 | 拦截器(Interceptor) | 过滤器(Filter) |
|---|---|---|
| 所属 | Spring | Servlet |
| 拦截范围 | Controller 请求 | 所有请求 |
| 是否能用 Spring Bean | ✅ 可以 | ❌ 不直接 |
| 执行顺序 | 在 Servlet 之后 | 在 Servlet 之前 |
| 使用场景 | 业务拦截 | 编码、安全、日志 |
拦截:
拦截:
拦截:
Java 拦截器(Spring MVC)主要拦截 Controller 层的 HTTP 请求,不适合做底层请求过滤或方法级拦截。
如果你是 面试准备 / 项目设计 / 具体代码实现,可以告诉我场景,我可以直接给你示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。