自定义拦截器
1.什么是拦截器
-
说明
-
使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定 的功能.
-
自定义的拦截器必须实现
HandlerInterceptor
接口/** * @author * @version 1.0 * MyInterceptor: 自定义的拦截器需要实现HandlerInterceptor */ @Component public class MyInterceptor implements HandlerInterceptor { }
-
注册自定义拦截器
@Configuration @EnableWebMvc public class WebConfig implements WebMvcConfigurer { @Resource private MyInterceptor myInterceptor; //注册自定义拦截器,这样就可以生效 @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(myInterceptor); } }
-
2.拦截器的三个方法
preHandle()
:这个方法在业务处理器处理请求之前被调用,在该方法中对用户请求 request 进行处理。postHandle()
:这个方法在目标方法处理完请求后执行afterCompletion()
:这个方法在完全处理完请求后被调用,可以在该方法中进行一些资源 清理的操作。
3.针对三个方法的说明
- 如果
preHandle
方法 返回 false, 则不再执行目标方法, 可以在此指定返回页面 postHandle
在目标方法被执行后执行. 可以在方法中访问到目标方法返回的ModelAndView
对象- 若
preHandle
返回 true, 则afterCompletion
方法 在渲染视图之后被执行 - 若
preHandle
返回 false, 则afterCompletion
方法不会被调用 - 在配置拦截器时,可以指定该拦截器对哪些请求生效,哪些请求不生效
---------------------------------- 天才往往比普通人更加努力,只不过他们的努力效益更高,所以看起来更加明显,当然更困难的是普通人看不到成绩还要拼命努力。