Heim  >  Artikel  >  Java  >  Beispielerklärung der HandlerExecutionChain-Klasse

Beispielerklärung der HandlerExecutionChain-Klasse

零下一度
零下一度Original
2017-07-18 14:37:201839Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn