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