阻拦器装备:
- SpringMVC中的阻拦器用于阻拦控制器办法的履行
- SpringMVC中的阻拦器需求完成HandlerInterceptor或许承继HandlerInterceptorAdapter类
- Spring的阻拦器必须在SpringMVC的装备文件中进行装备:







因此咱们知道了:阻拦器的三个重要办法分别在控制器履行之前,控制器履行之后,视图渲染之后。
创建阻拦器:

咱们自定义的阻拦器要完成HandlerInterceptor接口而且完成三个办法:
- preHandle()
- postHandle()
- afterCompletion()
观察源码:preHandle()回来true时,阻拦器各个办法的履行次序:
阻拦器的三个抽象办法: SpringMVC中的阻拦器有三个抽象办法
- preHandle:控制器办法履行之前履行preHandle(),其boolean类型的回来值表明是否阻拦或放行,回来true为放行,即调用控制器办法,假如为false就表明阻拦,就不调用控制器办法
- postHandle:控制器办法履行之后履行postHandle()
- afterCompletion:处理完视图和模型数据,渲染视图结束之后履行afterCompletion()
多个阻拦器的履行次序:
i.若每个阻拦器的preHandle()都回来true
此刻多个阻拦器的履行次序和阻拦器在SpringMVC的装备文件的装备次序有关:
preHandle()会依照装备的次序履行,而postHandle()和afterComplation()会依照装备的反序履行
ii.若某个阻拦器的preHandle()回来了false
preHandle()回来false和它之前的阻拦器的preHandle()都会履行,postHandle()都不履行,回来false的阻拦器之前的阻拦器的afterComplation()会履行


DeBUG检查源码:






postHandle一个都不会履行,因为afterComletion是根据索引来履行,因此会回来阻拦器为false之前的阻拦器, 而preHandle会履行阻拦器为false及其之前的阻拦器。(假如不履行回来false的阻拦器,那么就不知道这个阻拦器是不是回来false)
上面便是阻拦器一些中心的履行次序源码了,期望可以帮到我们。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。