發(fā)布日期:2023-12-25 瀏覽次數(shù):1874
單個(gè)攔截器的執(zhí)行流程:
1. 攔截器類可以通過實(shí)現(xiàn)HandlerInterceptor接口或繼承HandlerInterceptor接口的實(shí)現(xiàn)類(如HandlerInterceptorAdapter)來定義。
2. 在程序執(zhí)行時(shí),會(huì)首先執(zhí)行攔截器類中的preHandle()方法。
3. 如果preHandle()方法的返回值為true,則程序會(huì)繼續(xù)向下執(zhí)行處理器中的方法;如果返回值為false,則不再向下執(zhí)行。
4. 在業(yè)務(wù)處理器(即控制器Controller類)處理完請(qǐng)求后,會(huì)執(zhí)行postHandle()方法。
5. 然后會(huì)通過DispatcherServlet向客戶端返回響應(yīng)。
6. 在DispatcherServlet處理完請(qǐng)求后,才會(huì)執(zhí)行afterCompletion()方法。
多個(gè)攔截器的執(zhí)行流程:
1. 攔截器類可以通過實(shí)現(xiàn)WebRequestInterceptor接口或繼承WebRequestInterceptor接口的實(shí)現(xiàn)類來定義多個(gè)攔截器。
2. 在程序中有多個(gè)攔截器同時(shí)工作時(shí),它們的preHandle()方法會(huì)按照配置文件中攔截器的配置順序執(zhí)行。
3. 如果有多個(gè)攔截器同時(shí)工作,它們的postHandle()方法和afterCompletion()方法則會(huì)按照配置順序的反序執(zhí)行。