Maison >Java >javaDidacticiel >Exemple d'explication de la classe HandlerExecutionChain

Exemple d'explication de la classe HandlerExecutionChain

零下一度
零下一度original
2017-07-18 14:37:201857parcourir

Avant d'expliquer HandlerExecutionChain, ayons une compréhension générale des principales étapes de développement de SpringMVC :

Déployez DispaterServlet dans web.xml et configurez springmvc.xml et d'autres fichiers

Demandez le fichier ; fichier de mappage vers Processor HandlerMapping;

HandlerMapping mappera la requête à un objet gestionnaire de type HandlerExecutionChain;

passera l'objet gestionnaire en tant que paramètre à l'objet d'instanciation de HandlerAdapter et appellera sa méthode de gestionnaire générera un objet ModelAndView ;

Utilisez l'analyseur de vue ViewResolver pour analyser le ModelAndView généré à l'étape précédente dans une vue ;

DispatcherServlet renvoie la vue à l'utilisateur en fonction de la vue obtenue.

La classe HandlerExecutionChain est relativement simple et facile à comprendre.

============================================ == ============================

  HandlerExecutionChain {

===== === ================================================ === ===============

Voici quelques attributs de la classe.

  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);
                }
            }
        }
    }

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn