工作中,我们肯定都会接触到拦截器,但是经常在拦截的过程中出现各种问题,比如拦截之后,静态资源也被拦截,结合AOP的时候起不到作用,或者拦截根本没有生效。用SpringMVC的小伙伴肯定深有感受,接下来,我们一起整理一遍拦截器及AOP。
1.什么是拦截器
在SpringMVC中用于拦截请求的代码。由于SpringMVC的视图解析器的存在,在拦截请求到处理请求再到返回视图中间有两个间隙,interceptor提供了preHandle和postHandle以及afterCompletion三个方法。preHandle调用controller具体方法之前调用,postHandle完成具体方法之后调用,afterCompletion完成对页面的render以后调用,至此整个页面渲染完成。也就是说我们在preHandle记录开始的时间,在afterCompletion记录结束的时间,就可或者整个页面生成的时间。
2.步骤和流程
步骤:
第一步:自定义一个实现了Interceptor接口的类,或者继承抽象类AbstractInterceptor。这里继承了HandlerInterceptor接口
第二步:在配置文件中注册定义的拦截器。
第三步:在需要使用Controller中编写业务逻辑
接下来就看具