目录
一、实现原理
我们先回顾一下springMVC流程图,前置控制器向处理器映射器发请求查找处理器后,返回的是一个执行链(包括一系列的拦截器)。Spring MVC中拦截器类似于Servlet中的过滤器,用于对处理器的预处理或者后处理。其拦截器的接口是:HandlerInterceptor。
在企业开发,使用拦截器实现用户认证(用户登陆后进行身份校验拦截),用户权限拦截和方法性能监控等。
二、栗子
2.1 思路分析
方法一:
定义一个类,实现HandlerInterceptor接口。
- 定义一个类,实现HandlerInterceptor接口
- 实现接口的三个方法preHandle、postHandle、afterCompletion
- 配置核心文件dispatch-servlet.xml
preHandle:进入处理器之前执行,拦截作用。通常用于身份认证、授权。
postHandle:进入控制器之后,返回ModelAndView之前。从ModelAndView出发 ,可以传数据到页面,可以指定统一的视图,比如淘宝的菜单栏导航。
afterCompletion:控制器执行完之后。通常用于异常处理、日志处理。
方法二:
继承实现了HandlerInterceptor接口的类,比如Spring已经提供的实现了HandlerInterceptor接口的抽象类HandlerInterceptorAdapter。