Java中过滤器(Filter)、拦截器(Interceptor)、监听器(Listener)
Java中过滤器(Filter)、拦截器(Interceptor)、监听器(Listener)三者对比
一、基础概念
1. Listener 监听器(Servlet层面,事件监听)
- 归属:Servlet规范,属于Java‑Web原生组件,运行在Tomcat容器中。
- 作用:监听Web容器的事件,比如对象的创建、销毁、属性新增/修改/删除,本身不拦截请求。
- 监听对象:
- ServletContext(整个项目上下文)
- HttpSession(会话)
- ServletRequest(单次请求)
- 常见用途:统计在线人数、项目启动初始化加载配置、记录会话创建销毁。
- 执行时机:容器触发事件就执行,和请求链路可无关。
- 实现方式:实现对应监听器接口,
@WebListener注册。
2. Filter 过滤器(Servlet层面,拦截请求)
- 归属:Servlet规范,Tomcat原生组件。
- 作用:拦截Servlet请求,在请求到达Servlet之前做预处理,响应返回前做后处理。
- 执行位置:在进入SpringMVC的DispatcherServlet之前。
- 用途:编码设置、跨域处理、登录校验、请求黑名单、过滤静态资源。
- 核心方法:
doFilter(ServletRequest, ServletResponse, FilterChain),