什么是拦截器
- 拦截器是指通过统一拦截从浏览器发往服务器的请求来完成功能的增强
- 使用场景:解决请求的共性问题(如:乱码问题、权限验证问题等)
拦截器的基本工作原理
拦截器的实现
- 编写拦截器类实现HandlerInterceptor接口
- 将拦截器注册进SpringMVC框架中
- 配置拦截器的拦截规则
拦截器的方法介绍
- preHandle方法,在请求被处理之前进行调用(返回值表示是否需要将当前的请求拦截下来:false:请求将被终止;true:请求将会继续运行。Object arg2 表示的是被拦截的请求的目标)
- postHandle方法,在请求被处理之后进行调用(可以通过ModelAndView参数来改变显示的视图,或修改发往视图的方法)
- afterCompletion方法,在请求结束之后才进行调用(主要用于资源销毁)
多拦截器协同工作
拦截器的使用场景
- 使用原则:处理所有请求的共同问题
- 解决乱码问题
- 解决权限验证问题
拦截器和过滤器的区别
- 过滤器Filter依赖于Serrvlet容器,基于回调函数,过滤范围大
- 拦截器Interceptor依赖于框架容器,基于反射机制,只过滤请求
- 拦截器可以处理Web应用中请求的一些通用性问题
- 共性问题在拦截器中处理,可以减少重复代码,便于维护