05-SpringMVC 拦截器
参考资料:https://spring-mvc.linesh.tw/
1. 拦截器作用
SpringMVC 框架中的拦截器用于对处理器进行预处理
和后处理
的技术。
可以定义拦截器链,连接器链就是将拦截器按着顺序结成一条链,在访问被拦截的方法时,拦截器链中的拦截器会按着定义的顺序执行。
拦截器和过滤器的功能比较类似,有以下区别:
过滤器是 Servlet 规范的一部分,任何框架都可以使用过滤器技术;
拦截器是SpringMVC 框架独有的
。过滤器配置了 /*,可以拦截任何资源;
拦截器只会对控制器中的方法进行拦截
。
拦截器也是 AOP 思想的一种实现方式。
2. 单个拦截器
自定义拦截器,需要实现 HandlerInterceptor
接口。
- 创建自定义拦截器
1 |
|
- 在 springmvc.xml 中配置拦截器
1 |
|
- 测试
1 |
|
3. 多个拦截器
注意:
- 多个拦截器时,按照 springmvc.xml 配置的顺序执行。
- (2个拦截器时) 拦截器1 preHandle 不放行,postHandle 和 afterCompletion 不会执行。
- (2个拦截器时) 拦截器1 preHandle 不放行,拦截器2不执行。
2个拦截器的执行流程:
HandlerInterceptor1…preHandle
HandlerInterceptor2…preHandle
HandlerInterceptor2…postHandle
HandlerInterceptor1…postHandle
HandlerInterceptor2…afterCompletion
HandlerInterceptor1…afterCompletion
05-SpringMVC 拦截器
https://janycode.github.io/2018/06/20/08_框架技术/03_SpringMVC/05-SpringMVC 拦截器/