interceptor
拦截器(Interceptor)同 Filter 过滤器一样,它俩都是面向切面编程。在 Spring中,当请求发送到 Controller 时,在被Controller处理之前,它必须经过 Interceptors
Spring Interceptor是一个非常类似于Servlet Filter 的概念
拦截流程
1、当访问需要有一定权限的资源时,由拦截器重定向到指定页面
2、拦截器还应该配置允许游客访问的资源,比如访问的是登录页面,拦截器不应该拦截
3、用户登录成功后,往 cookie/session 添加登录成功的标识
4、下次请求时,拦截器通过判断 cookie/session 中是否有该标识来决定继续流程还是到登录页面
Interceptor 作用
拦截器是在面向切面编程中应用的,就是在你的service或者一个方法前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。日志记录:记录请求信息的日志,以便进行信息监控、信息统计、计算 PV(Page View)等; 权限检查:如登录检测,进入处理器检测是否登录; 性能监控:通过拦截器在进入处理器之前记录开始时间,在处理完后记录结束时间,从而得到该请求的处理时间。通用行为:读取 Cookie 得到用户信息并将用户对象放入请求,从而方便后续流程使用,还有如提取 Locale、Theme 信息等,只要是多个处理器都需要的即可使用拦截器实现。