每日小结
Spring中Filter和Interceptor的区别
Filter和Interceptor都可以实现对请求的拦截
#功能定位
都可以用来实现用户认证
#区别
定义规范不同
Filter是Servlet的规范; 而Interceptor是Spring框架提供的类似的拦截器
拦截范围不同
Filter的拦截范围是Servlet层; Interceptor的拦截范围是Controller层
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27│ ▲
▼ │
┌───────┐
│Filter1│
└───────┘
│ ▲
▼ │
┌───────┐
│Filter2│
└───────┘
│ ▲
▼ │
┌─────────────────┐
│DispatcherServlet│<───┐
└─────────────────┘ │
│ ┌────────────┐
│ │ModelAndView│
│ └────────────┘
│ ┌ ─ ─ ─ ─ ─ ─ ─ ─ ┐ ▲
│ ┌───────────┐ │
├─┼─>│Controller1│──┼─┤
│ └───────────┘ │
│ │ │ │
│ ┌───────────┐ │
└─┼─>│Controller2│──┼─┘
└───────────┘
└ ─ ─ ─ ─ ─ ─ ─ ─ ┘管理方式不同
Filter由Servlet容器管理, 需要使用
DelegatingFilterProxy
代理类才能被Spring集成; Interceptor直接由Spring IoC容器管理