Bevor wir HandlerExecutionChain erklären, wollen wir uns ein allgemeines Verständnis der Kernentwicklungsschritte von SpringMVC verschaffen:
Stellen Sie DispaterServlet in web.xml bereit und konfigurieren Sie springmvc.xml und andere Dateien.
Anfordern Zuordnungsdatei zum Prozessor HandlerMapping;
HandlerMapping ordnet die Anforderung einem Handlerobjekt vom Typ HandlerExecutionChain zu;
übergibt das Handlerobjekt als Parameter an das Instanziierungsobjekt von HandlerAdapter und ruft dessen Handlermethode auf generiert ein ModelAndView-Objekt ;
Verwenden Sie den ViewResolver-Ansichtsparser, um das im vorherigen Schritt generierte ModelAndView in eine Ansicht zu analysieren;
DispatcherServlet gibt die Ansicht basierend auf der erhaltenen Ansicht an den Benutzer zurück.
Die HandlerExecutionChain-Klasse ist relativ einfach und leicht zu verstehen.
========================================== == ===========================
HandlerExecutionChain {
===== === ============================================ === ==============
Im Folgenden sind einige Attribute der Klasse aufgeführt.
List<HandlerInterceptor>
============================ = ========================================
applyPreHandle(HttpServletRequest request, HttpServletResponse response) = (! ( i = 0; i < interceptors.length; i++= (!interceptor.preHandle(request, response, .interceptorIndex =
================================== === ==================================
applyPostHandle(HttpServletRequest request, HttpServletResponse response, ModelAndView mv) = (! ( i = interceptors.length - 1; i >= 0; i--=
/** * 这个方法只会执行preHandle()方法已经成功执行并且返回true的拦截器中的postHandle()方法。 */void triggerAfterCompletion(HttpServletRequest request, HttpServletResponse response, Exception ex)throws Exception { HandlerInterceptor[] interceptors = getInterceptors();if (!ObjectUtils.isEmpty(interceptors)) {for (int i = this.interceptorIndex; i >= 0; i--) { HandlerInterceptor interceptor = interceptors[i];try { interceptor.afterCompletion(request, response, this.handler, ex); }catch (Throwable ex2) { logger.error("HandlerInterceptor.afterCompletion threw exception", ex2); } } } }
Das obige ist der detaillierte Inhalt vonBeispielerklärung der HandlerExecutionChain-Klasse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!