温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java拦截器能拦截什么

发布时间:2026-09-18 20:02:01 来源:亿速云 阅读:92 作者:小樊 栏目:编程语言

在 Java 里常说的“拦截器(Interceptor)”通常出现在 Web 开发(如 Spring、Spring MVC、Struts2) 中,但不同框架里“拦截器”的能力和范围是不一样的。下面以最常见的 Spring MVC 拦截器为主来说明,并补充其他场景。


一、Spring MVC 拦截器能拦截什么

✅ 能拦截的

Spring 的 HandlerInterceptor 主要拦截 Controller 层的请求,具体来说:

  1. HTTP 请求进入 Controller 之前

    • 登录校验
    • 权限校验
    • 参数预处理
    • 日志记录
  2. Controller 执行之后、视图渲染之前

    • 修改 ModelAndView
    • 统一处理返回数据(有限)
  3. 请求完成之后(视图渲染后)

    • 资源清理
    • 性能监控(耗时统计)

❌ 不能拦截的

Spring MVC 拦截器 不能拦截:

  • 静态资源(如 /css/、/js/,除非额外配置)
  • Filter 层面的请求
  • 其他 Servlet 请求
  • 方法级调用(如 Service 内部方法)
  • WebSocket、异步线程中的调用

二、Spring MVC 拦截器拦截的生命周期

请求 → Filter → DispatcherServlet → 拦截器.preHandle
       → Controller
       → 拦截器.postHandle
       → 视图渲染
       → 拦截器.afterCompletion

三、拦截器 vs 过滤器(容易混淆)

对比项 拦截器(Interceptor) 过滤器(Filter)
所属 Spring Servlet
拦截范围 Controller 请求 所有请求
是否能用 Spring Bean ✅ 可以 ❌ 不直接
执行顺序 在 Servlet 之后 在 Servlet 之前
使用场景 业务拦截 编码、安全、日志

四、拦截器能“做什么事”(典型用途)

  • 登录状态校验
  • 接口鉴权(Token)
  • 请求日志
  • 接口耗时统计
  • 防止重复提交
  • 多语言 / 多租户处理

五、其他 Java 中的“拦截器”

1️⃣ MyBatis 拦截器

拦截:

  • SQL 执行
  • 参数处理
  • 结果映射

2️⃣ Spring AOP(广义拦截)

拦截:

  • Service 方法
  • 任意 Bean 方法
  • 注解方法

3️⃣ Struts2 拦截器

拦截:

  • Action 执行前后

六、一句话总结

Java 拦截器(Spring MVC)主要拦截 Controller 层的 HTTP 请求,不适合做底层请求过滤或方法级拦截。

如果你是 面试准备 / 项目设计 / 具体代码实现,可以告诉我场景,我可以直接给你示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手