
拦截器:通过统一拦截从浏览器发往服务器的请求来完成功能的增强
使用场景:解决请求的共性问题 如:乱码、权限验证
基本工作原理:拦截器和过滤器的工作原理相似
乱码问题:使用Spring过滤器(Filter) org.springframework.web.filter
在web.xml中配置filter
拦截器的实现:
1、编写拦截器类实现HandlerInterceptor接口
2、将拦截器注册进SpringMVC框架中
3、配置拦截器的拦截规则
(1)在pom.xml中添加dependency
(2)实现HandlerInterceptor接口
(3)将拦截器注册进Springmvc框架中(需要添加mvc)
运行的执行顺序
所有的请求全部经过了拦截器
(4)配置拦截器的拦截规则 拦截所有viewAll的请求
拦截器方法介绍:
从拦截器返回数据:
afterCompletion方法一般用于关闭资源
多个拦截器的应用:
配置多个拦截器:
再创建一个拦截器TestInterceptor01
拦截器的执行顺序:
执行顺序:
拦截器的其他实现方式:
(1)实现webRequestInterceptor接口
(2)向SpringMVC框架中注册的写法不变
(3)弊端:preHandle方法没有返回值 不能终止请求
拦截器的使用场景:处理所有请求的共性问题
(1)乱码
(2)权限验证
拦截器和过滤器的对比以及总结:
区别:
(1)过滤器Filter依赖于Servlet容器,基于回调函数,过滤范围大
(2)拦截器Interceptor依赖于框架容器,基于反射机制,只过滤请求
总结:
拦截器可以处理Web应用中请求的一些通用性问题
共性问题在拦截器中处理,可以减少重复代码,便于维护